FAQ
Hola a todos.

Tengo una cuestión que no se como solucionarla.

Tengo un formulario que al iniciarse carga los valores de una tabla de
un base de datos, para luego proceder a su modificación. Del estilo:

ID id del cliente
Nombre nombre del cliente
Dirección dirección del cliente

La cuestión es que si en la base de datos existen registros con comillas
dobles, php interpreta que ahí ha acabado el texto o valor a mostrar y
no me lo muestra. Por ejemplo:

Si un campo nombre (p.e.) tiene como valor:
Construcciones "El Magnifico", S.L.

Php sólo me mostraría en el formulario:

Construcciones

Pues al llegar a la primera comilla doble, interpreta que ya se ha
terminado el texto.

¿Alguien sabría decirme como solucionar esto?.
- --


< ¡¡Nos vemos!! >
----------------------------
\
\
.::!!!!!!!:.
.!!!!!:. .:!!!!!!!!!!!!
~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
:$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
$$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
$$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
"*$bd$$$$ '*$$$$$$$$$$$o+#"
"""" """""""

Search Discussions

  • Mario Sanchez at Nov 7, 2007 at 10:43 am
    Hola,

    Puedes utilizar str_replace para eliminar las comillas dobles.

    $cadenaTexto = str_replace(",',$row['Nombre']);

    Saludos.





    Pablo Braulio <brulics@gmail.com>
    07/11/2007 11:38

    Para
    php-es@lists.php.net
    cc

    Asunto
    [PHP-ES] Como evitar las comillas dobles.






    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    Hola a todos.

    Tengo una cuestión que no se como solucionarla.

    Tengo un formulario que al iniciarse carga los valores de una tabla de
    un base de datos, para luego proceder a su modificación. Del estilo:

    ID id del cliente
    Nombre nombre del cliente
    Dirección dirección del cliente

    La cuestión es que si en la base de datos existen registros con comillas
    dobles, php interpreta que ahí ha acabado el texto o valor a mostrar y
    no me lo muestra. Por ejemplo:

    Si un campo nombre (p.e.) tiene como valor:
    Construcciones "El Magnifico", S.L.

    Php sólo me mostraría en el formulario:

    Construcciones

    Pues al llegar a la primera comilla doble, interpreta que ya se ha
    terminado el texto.

    ¿Alguien sabría decirme como solucionar esto?.
    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""


    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php
  • Ever Daniel Barreto Rojas at Nov 7, 2007 at 10:51 am

    El 07/11/2007 a las 06:43 a.m., escribiste:
    Puedes utilizar str_replace para eliminar las comillas dobles.
    $cadenaTexto = str_replace(",',$row['Nombre']);
    o bien puedes "escaparlas"... hay una función para eso (addslashes
    tal vez?) o bien, usa comillas simples...

    Cordiales saludos,

    -------------------
    Ever Daniel Barreto Rojas
    e.mail: ebarreto@nexusit.com.py :: Nexus Information Technologies
    web: www.nexusit.com.py
    07/11/2007 07:49 a.m.

    ---------------------
    Nuestra civilización corre sobre software.
    – Bjarne Stroustrup, inventor del lenguaje C++
    ---------------------
  • Isra Navas at Nov 7, 2007 at 11:02 am
    Has probado a utilizar comillas simples? y concatenar con .?

    El 7/11/07, Ever Daniel Barreto Rojas <ebarreto@nexusit.com.py> escribió:
    El 07/11/2007 a las 06:43 a.m., escribiste:
    Puedes utilizar str_replace para eliminar las comillas dobles.
    $cadenaTexto = str_replace(",',$row['Nombre']);
    o bien puedes "escaparlas"... hay una función para eso (addslashes
    tal vez?) o bien, usa comillas simples...

    Cordiales saludos,

    -------------------
    Ever Daniel Barreto Rojas
    e.mail: ebarreto@nexusit.com.py :: Nexus Information Technologies
    web: www.nexusit.com.py
    07/11/2007 07:49 a.m.

    ---------------------
    Nuestra civilización corre sobre software.
    – Bjarne Stroustrup, inventor del lenguaje C++
    ---------------------

    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php
  • Pablo Braulio at Nov 7, 2007 at 11:15 am

    Ever Daniel Barreto Rojas escribió:
    El 07/11/2007 a las 06:43 a.m., escribiste:
    Puedes utilizar str_replace para eliminar las comillas dobles.
    $cadenaTexto = str_replace(",',$row['Nombre']);
    o bien puedes "escaparlas"... hay una función para eso (addslashes
    tal vez?) o bien, usa comillas simples...

    Cordiales saludos,
    Vaya, gracias por las contestaciones.

    Lo que ocurre es que el usuario introduce unos datos en un formulario
    para crear registros en una tabla de una bd. Sobre eso no tengo contról,
    y este puede poner tanto comillas simples como dobles.

    De momento voy a probar str_replace, aunque se admiten todas las opiniones.

    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""
  • Ever Daniel Barreto Rojas at Nov 7, 2007 at 11:22 am
    pablo:

    El 07/11/2007 a las 07:15 a.m., escribiste:
    Lo que ocurre es que el usuario introduce unos datos en un formulario
    para crear registros en una tabla de una bd. Sobre eso no tengo contról,
    y este puede poner tanto comillas simples como dobles.
    pues, deberías de "validar" esos datos... escaparlos, etc, antes de
    insertarlos a tu bd (hay funciones para mysql y postgresql que
    hacen tal cosa)... recuerda que todos los datos que vienen fuera de
    tu aplicación son culpables hasta que se demuestre lo contrario :D

    Cordiales saludos,

    -------------------
    Ever Daniel Barreto Rojas
    e.mail: ebarreto@nexusit.com.py :: Nexus Information Technologies
    web: www.nexusit.com.py
    07/11/2007 08:21 a.m.

    ---------------------
    "Predigo que Internet pronto estallará espectacularmente como
    una supernova y en 1996 se colapsará catastróficamente."
    - Bob Metcalfe, inventor de Ethernet y fundador de 3com, 1995.
    ---------------------
  • Pablo Braulio at Nov 7, 2007 at 11:25 am

    Ever Daniel Barreto Rojas escribió:
    pablo:

    El 07/11/2007 a las 07:15 a.m., escribiste:
    Lo que ocurre es que el usuario introduce unos datos en un formulario
    para crear registros en una tabla de una bd. Sobre eso no tengo contról,
    y este puede poner tanto comillas simples como dobles.
    pues, deberías de "validar" esos datos... escaparlos, etc, antes de
    insertarlos a tu bd (hay funciones para mysql y postgresql que
    hacen tal cosa)... recuerda que todos los datos que vienen fuera de
    tu aplicación son culpables hasta que se demuestre lo contrario :D

    Cordiales saludos,
    Hola.

    ¿Sabrías decirme que función de postgres hace eso?. Es que estoy mirando
    en php.net y no veo nada al respecto.

    De momento lo único que se me ocurre es cambiar las " por ' con
    str_replace() antes de hacer el insert.

    Gracias.

    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""
  • Ever Daniel Barreto Rojas at Nov 7, 2007 at 11:31 am
    pablo:

    El 07/11/2007 a las 07:25 a.m., escribiste:
    ¿Sabrías decirme que función de postgres hace eso?. Es que estoy mirando
    en php.net y no veo nada al respecto.
    pg_escape_string

    Cordiales saludos,

    -------------------
    Ever Daniel Barreto Rojas
    e.mail: ebarreto@nexusit.com.py :: Nexus Information Technologies
    web: www.nexusit.com.py
    07/11/2007 08:32 a.m.

    ---------------------
    Al sentarse para jugar dominó:
    - ¿Vamos a jugar como caballeros ó como lo que somos?
    Mariano Moreno (Cantinflas)
    ---------------------
  • Pablo Braulio at Nov 7, 2007 at 11:33 am

    Ever Daniel Barreto Rojas escribió:
    pablo:

    El 07/11/2007 a las 07:25 a.m., escribiste:
    ¿Sabrías decirme que función de postgres hace eso?. Es que estoy mirando
    en php.net y no veo nada al respecto.
    pg_escape_string
    Muchas gracias, voy a probarlo.
    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""
  • Pablo Braulio at Nov 7, 2007 at 11:56 am
    He probado pg_escape_string y tiene una cosa que no me gusta.

    Si introduzco: hola "soy yo".

    Esto me introduce en la tabla de la bd -> hola \"soy yo\". Lo cual queda
    un poco feo.

    De momento, a no ser que haya alguna otra alternativa mas efectiva, he
    optado por hacer un str_replace() antes del insert para que me sustituya
    las comillas dobles por unas simples.

    De ese modo el texto: hola "soy yo", lo traduciría como : hola 'soy yo'.

    Gracias a todos por los comentarios.
    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""
  • Pablo Braulio at Nov 7, 2007 at 12:08 pm

    No importa si es feo si luego al mostrarlo quitas las barras
    stripslashes($string);
    http://es.php.net/manual/es/function.stripslashes.php
    Cierto, voy a probar.
    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""
  • Gerardo Benitez at Nov 7, 2007 at 12:34 pm
    Hola Pablo.

    tenes que hacer 2 procesos:

    1) "escapar" el texto antes de ingresarlo a la base de datos, al escapar los
    datos cuando en tu texto vos tengas una ", en la base se va a guardar como
    \" de ese modo php entiende que no se trata de una comilla de cierre.
    Por otro lado, escapar el texto es necesario para evitar la inyeccion de sql
    a tus querys a la base de datos.
    - AddSlashes http://www.php.net/manual/es/function.addslashes.php
    - mysql_real_escape_string (si usas mysql)
    http://www.php.net/manual/es/function.mysql-real-escape-string.php

    2) quitarle el escapado al mostrarlo para la edición.

    con esta funcion podes sacar el escapado "stripslashes"
    www.php.net/manual/es/function.stripslashes.php


    On Nov 7, 2007 8:56 AM, Pablo Braulio wrote:

    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    He probado pg_escape_string y tiene una cosa que no me gusta.

    Si introduzco: hola "soy yo".

    Esto me introduce en la tabla de la bd -> hola \"soy yo\". Lo cual queda
    un poco feo.

    De momento, a no ser que haya alguna otra alternativa mas efectiva, he
    optado por hacer un str_replace() antes del insert para que me sustituya
    las comillas dobles por unas simples.

    De ese modo el texto: hola "soy yo", lo traduciría como : hola 'soy yo'.

    Gracias a todos por los comentarios.
    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""


    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php

    --
    Gerardo Benitez

    ----------------------------------------------------------------------
    mercadoagil.com.ar

    webseficientes.com.ar
    tips y articulos para desarrolladores web
    ----------------------------------------------------------------------
  • Pablo Braulio at Nov 7, 2007 at 5:25 pm

    Gerardo Benitez escribió:
    Hola Pablo.

    tenes que hacer 2 procesos:

    1) "escapar" el texto antes de ingresarlo a la base de datos, al escapar
    los datos cuando en tu texto vos tengas una ", en la base se va a
    guardar como \" de ese modo php entiende que no se trata de una comilla
    de cierre.
    Por otro lado, escapar el texto es necesario para evitar la inyeccion de
    sql a tus querys a la base de datos.
    - AddSlashes http://www.php.net/manual/es/function.addslashes.php
    <http://www.php.net/manual/es/function.addslashes.php>
    - mysql_real_escape_string (si usas mysql)
    http://www.php.net/manual/es/function.mysql-real-escape-string.php

    2) quitarle el escapado al mostrarlo para la edición.

    con esta funcion podes sacar el escapado "stripslashes"
    www.php.net/manual/es/function.stripslashes.php
    <http://www.php.net/manual/es/function.stripslashes.php>
    Gracias por la información.

    Pero haciendo eso veo un comportamiento extraño en la función
    stripslashes() dentro de un input.

    Mira.
    Código para hacer un insert:
    - --------------------

    <?php
    /*
    * Created on 19/10/2007
    *
    * To change the template for this generated file go to
    * Window - Preferences - PHPeclipse - PHP - Code Templates
    */
    include('conexion.php');

    $nombre= addslashes($_POST["nombre"]);
    $direccion= addslashes($_POST["direccion"]);
    $cod_post= addslashes($_POST["cod_post"]);
    $poblacion= addslashes($_POST["poblacion"]);
    $provincia= addslashes($_POST["provincia"]);
    $cif= addslashes($_POST["cif"]);



    $i= "insert into clientes(nombre, direccion, cod_post, poblacion,
    provincia, cif) values('".$nombre."', '".$direccion."', '".$cod_post."',
    '".$poblacion."', '".$provincia."', '".$cif."')";
    $qI= pg_query($i);
    - -------------------------
    Esto inserta los datos recogidos en un formulario dentro de la base de
    datos.

    La inserción se hace correctamente:
    - ----------------------
    SELECT * from clientes where id=55;
    id | nombre | direccion | cod_post |
    poblacion | provincia | cif
    -
    ----+--------------------------+-----------------------+----------+-----------+-----------------------+-----------
    55 | bombonería \"el bombon\" | Pz. Mayor \"impares\" | 12400 |
    SEGORBE | Castellón de la Plana | baaaaaaaa

    - ----------------------

    Luego tengo un formulario, para modificar los datos y que lo muestra
    dentro de input:

    - ------------------------
    <?php
    /*
    * Created on 22/10/2007
    *
    * To change the template for this generated file go to
    * Window - Preferences - PHPeclipse - PHP - Code Templates
    */
    require('inc/session.php');

    $s= "select id, nombre, direccion, cod_post, poblacion, provincia, cif
    from clientes where id =".$_COOKIE['cliente']."";
    $q= pg_query($s);
    $r= pg_fetch_array($q);
    ?>

    ....mas código html.......

    <TR>
    <TD id="nom_ficha">Nombre</TD>
    <TD><INPUT type="text" name="nombre" size="50" value="<?php echo
    stripslashes($r["nombre"]); ?>"></TD>
    </TR>
    <TR>
    <TD id="nom_ficha">Dirección</TD>
    <TD><INPUT type="text" name="direccion" size="50" value="<?php echo
    stripslashes($r["direccion"]); ?>"></TD>
    </TR>
    - ---------------------

    Pero para mi sorpresa en el input que muestra los datos de la consulta
    como "value", me muestra sólo: bombonería (en el caso del input
    name="nombre) y Pz. Mayor (en el caso del input name="direccion").

    ¿No funciona del mismo modo la función stripslashes dentro de un input
    que sólo con un echo?. Lo curioso es que si hago un simple echo (echo
    $stripslashes($variable["campo"]);), funciona.
    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""
  • Rolan Benavent at Nov 8, 2007 at 9:08 am
    Hola Pablo,
    al hacer esto:
    <TD><INPUT type="text" name="nombre" size="50" value="<?php echo
    stripslashes($r["nombre"]); ?>"></TD>
    te ocurre algo parecido a cuando insertas en la BD, ya que la " te
    cierra el value, es decir, te hace esto:
    <TD><INPUT type="text" name="nombre" size="50"
    value="bombonería "el bombón""></TD>

    de hecho, si te fijas, también te provoca un fallo en el código html...
    una forma de solucionarlo seria utilizando el htmlentites():

    <TD><INPUT type="text" name="nombre" size="50" value="<?php echo
    htmlentities(stripslashes($r["nombre"])); ?>"></TD>

    y con esto, todo solucionado...

    Saludos,
    Rolan.


    Pablo Braulio escribió:
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    Gerardo Benitez escribió:
    Hola Pablo.

    tenes que hacer 2 procesos:

    1) "escapar" el texto antes de ingresarlo a la base de datos, al escapar
    los datos cuando en tu texto vos tengas una ", en la base se va a
    guardar como \" de ese modo php entiende que no se trata de una comilla
    de cierre.
    Por otro lado, escapar el texto es necesario para evitar la inyeccion de
    sql a tus querys a la base de datos.
    - AddSlashes http://www.php.net/manual/es/function.addslashes.php
    <http://www.php.net/manual/es/function.addslashes.php>
    - mysql_real_escape_string (si usas mysql)
    http://www.php.net/manual/es/function.mysql-real-escape-string.php

    2) quitarle el escapado al mostrarlo para la edición.

    con esta funcion podes sacar el escapado "stripslashes"
    www.php.net/manual/es/function.stripslashes.php
    <http://www.php.net/manual/es/function.stripslashes.php>
    Gracias por la información.

    Pero haciendo eso veo un comportamiento extraño en la función
    stripslashes() dentro de un input.

    Mira.
    Código para hacer un insert:
    - --------------------

    <?php
    /*
    * Created on 19/10/2007
    *
    * To change the template for this generated file go to
    * Window - Preferences - PHPeclipse - PHP - Code Templates
    */
    include('conexion.php');

    $nombre= addslashes($_POST["nombre"]);
    $direccion= addslashes($_POST["direccion"]);
    $cod_post= addslashes($_POST["cod_post"]);
    $poblacion= addslashes($_POST["poblacion"]);
    $provincia= addslashes($_POST["provincia"]);
    $cif= addslashes($_POST["cif"]);



    $i= "insert into clientes(nombre, direccion, cod_post, poblacion,
    provincia, cif) values('".$nombre."', '".$direccion."', '".$cod_post."',
    '".$poblacion."', '".$provincia."', '".$cif."')";
    $qI= pg_query($i);
    - -------------------------
    Esto inserta los datos recogidos en un formulario dentro de la base de
    datos.

    La inserción se hace correctamente:
    - ----------------------
    SELECT * from clientes where id=55;
    id | nombre | direccion | cod_post |
    poblacion | provincia | cif
    -
    ----+--------------------------+-----------------------+----------+-----------+-----------------------+-----------
    55 | bombonería \"el bombon\" | Pz. Mayor \"impares\" | 12400 |
    SEGORBE | Castellón de la Plana | baaaaaaaa

    - ----------------------

    Luego tengo un formulario, para modificar los datos y que lo muestra
    dentro de input:

    - ------------------------
    <?php
    /*
    * Created on 22/10/2007
    *
    * To change the template for this generated file go to
    * Window - Preferences - PHPeclipse - PHP - Code Templates
    */
    require('inc/session.php');

    $s= "select id, nombre, direccion, cod_post, poblacion, provincia, cif
    from clientes where id =".$_COOKIE['cliente']."";
    $q= pg_query($s);
    $r= pg_fetch_array($q);
    ?>

    ....mas código html.......

    <TR>
    <TD id="nom_ficha">Nombre</TD>
    <TD><INPUT type="text" name="nombre" size="50" value="<?php echo
    stripslashes($r["nombre"]); ?>"></TD>
    </TR>
    <TR>
    <TD id="nom_ficha">Dirección</TD>
    <TD><INPUT type="text" name="direccion" size="50" value="<?php echo
    stripslashes($r["direccion"]); ?>"></TD>
    </TR>
    - ---------------------

    Pero para mi sorpresa en el input que muestra los datos de la consulta
    como "value", me muestra sólo: bombonería (en el caso del input
    name="nombre) y Pz. Mayor (en el caso del input name="direccion").

    ¿No funciona del mismo modo la función stripslashes dentro de un input
    que sólo con un echo?. Lo curioso es que si hago un simple echo (echo
    $stripslashes($variable["campo"]);), funciona.
    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""

    --
    Rolan Benavent
    Dulasoft, s.l.
    info@dulasoft.com
    *PCMark3t.com*, tu tienda de informática en internet
    <http://www.pcmark3t.com>
    *Dulasoft.com*: consultoría informática, diseño gráfico, programación de
    páginas web y aplicaciones de software, montaje de redes, formación a
    empresas y particulares... <http://www.dulasoft.com>
  • Pablo Braulio at Nov 8, 2007 at 9:17 am

    Rolan Benavent escribió:
    Hola Pablo,
    al hacer esto:
    <TD><INPUT type="text" name="nombre" size="50" value="<?php echo
    stripslashes($r["nombre"]); ?>"></TD>
    te ocurre algo parecido a cuando insertas en la BD, ya que la " te
    cierra el value, es decir, te hace esto:
    <TD><INPUT type="text" name="nombre" size="50"
    value="bombonería "el bombón""></TD>

    de hecho, si te fijas, también te provoca un fallo en el código html...
    una forma de solucionarlo seria utilizando el htmlentites():

    <TD><INPUT type="text" name="nombre" size="50" value="<?php echo
    htmlentities(stripslashes($r["nombre"])); ?>"></TD>

    y con esto, todo solucionado...

    Saludos,
    Rolan.
    Estupendo.

    Muchisimas gracias.


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""
  • Samuel Castillo at Nov 8, 2007 at 2:17 pm
    Si en la base de datos estás viendo las cadenas con las dobles comillas
    escapadas, es que estás escapando doblemente.
    Lo mas seguro es que magic_quotes esté activado. Esta directiva actúa
    sobre las variables GET, POST y COOKIES haciendo la conversión de forma
    transparente. (notar que SESSION no se ve afectada)
    Una forma de obtener buenos resultados independientemente de
    magic_quotes lo vemos en los comentarios de php.net:
    $content = (! get_magic_quotes_gpc ()) ? addslashes ($content) : $content;
    Aunque lo idel sería hacerse una funcion de usuario que lo comprobase,
    tipo mi_addslashes que comprobase el estado de magic_quotes.

    Pablo Braulio wrote:
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    Rolan Benavent escribió:
    Hola Pablo,
    al hacer esto:

    <TD><INPUT type="text" name="nombre" size="50" value="<?php echo
    stripslashes($r["nombre"]); ?>"></TD>
    te ocurre algo parecido a cuando insertas en la BD, ya que la " te
    cierra el value, es decir, te hace esto:
    <TD><INPUT type="text" name="nombre" size="50"
    value="bombonería "el bombón""></TD>

    de hecho, si te fijas, también te provoca un fallo en el código html...
    una forma de solucionarlo seria utilizando el htmlentites():

    <TD><INPUT type="text" name="nombre" size="50" value="<?php echo
    htmlentities(stripslashes($r["nombre"])); ?>"></TD>

    y con esto, todo solucionado...

    Saludos,
    Rolan.
    Estupendo.

    Muchisimas gracias.


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""

  • Eduardo Huertas at Nov 9, 2007 at 8:26 am

    El 8/11/07, Samuel Castillo escribió:
    Una forma de obtener buenos resultados independientemente de
    magic_quotes lo vemos en los comentarios de php.net:
    $content = (! get_magic_quotes_gpc ()) ? addslashes ($content) : $content;
    Aunque lo idel sería hacerse una funcion de usuario que lo comprobase,
    tipo mi_addslashes que comprobase el estado de magic_quotes.
    En el mismo manual hay una función excelente que hace eso exactamente.
    Lo de las comillas no es ninguna tontería, y debería tenerse muy
    controlado, en caso contrario puede comprometer seriamente la
    seguridad del sitio web.

    http://xkcd.com/327/

    Saludos.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedNov 7, '07 at 10:38a
activeNov 9, '07 at 8:26a
posts17
users8
websitephp.net

People

Translate

site design / logo © 2022 Grokbase