[Php-avanzado] Comillas escapadas...

Silverzero silverzero.52 en gmail.com
Mie Mar 17 19:24:23 ARST 2010


Leo!

Que grande! Que distraída que estuve ahí!

Muchas gracias!

Saludos!

2010/3/17 Leonardo Tadei - Pegasus Tech Supply <leonardot en pegasusnet.com.ar>:
> Carolina!
>
>        HTML estandard!!!!
>
>        Las comillas tienen "sentido HTML" en la definición de los TAGs.
>
>        Estoy cargando: hola "mundo" cruel
>
>        y al volver, estás generando una etiqueta así:
>
>        <input name="email" value="hola " mundo"=""cruel"="">
>
>        en dónde el navegador interpreta como atributos de la etiqueta mal
> formados lo que se encuentra entre comillas, y cómo es un atributo, no
> lo muestra.
>
>        Fijate en el código fuente de la respuesta, está todo ahí, pero sin
> sentido para el HTML (y si validaras en el W3C te darías cuenta en 2
> minutos!)
>
>        Probá reemplazar las comillas por el elemento HTML correspondiente, y
> si no reemplazalas por algo que no moleste...
>
>        Seguimos!
>
> El mié, 17-03-2010 a las 15:51 -0300, Silverzero escribió:
>> Leo,
>>
>> ya probé poner el stripslashes en el print del campo y anduvo, pero
>> sólo para comillas simples, cuando ingreso algo con comillas dobles no
>> me muestra nada...eso es lo más raro de todo, que no las escapa! borra
>> el contenido entre medio...
>>
>> mirá tipeá algo con comillas dobles: http://salimas.com/mardelplata/cal-sus.php
>>
>> gracias!
>>
>> 2010/3/17 Leonardo Tadei - Pegasus Tech Supply <leonardot en pegasusnet.com.ar>:
>> > Hola Carolina,
>> >
>> >        Ok, ya veo...
>> >
>> >        Lo que te está pasando es que la configuración default de PHP, por
>> > razones de seguridad, escapa automáticamente las comillas.
>> >
>> >        Lo que tenés que hacer es escribir una función que las "desescape"
>> > antes de mostrar... no hay otros caminos viables porque generalmente no
>> > podés elegir la configuración del servidor, y los defaults tienen más
>> > peso que lo que el usuario diga.
>> >
>> >        A veces con stripslashes() funciona, a veces hay que agregarle alguna
>> > cosa...
>> >
>> >        El efecto en formularios de edición, encima, se ve acumulativo:
>> > 1ro:    'hola'
>> > 2do     \'hola\'
>> > 3ro     \\\'hola\\\'
>> > 4to     etc...
>> >
>> >        Probalo y contanos!
>> >
>> > PD: en http://salimas.com/mardelplata/eventos.php no veo nada con
>> > comillas incorrectas.
>> >
>> >
>> > El mié, 17-03-2010 a las 10:37 -0300, Silverzero escribió:
>> >> > Hola Carolina,
>> >>
>> >> Hola Leo,
>> >>
>> >> >
>> >> >        si no entiendo mal, tu problema es que al no pasar la validación y
>> >> > mostrar los valores cargados para que el usuario lo corrija, te aparecen
>> >> > escapados... una solución simple es, si el formulario falla, mostrar en
>> >> > los value del formulario los valores sin escapar, y usar solo
>> >> > mysql_real_escape_string() al momento de generar la query, después de la
>> >> > validación.
>> >> >
>> >> >        (si no es esto, no entendí el problema :( )
>> >>
>> >> Si, entendiste bien el problema, pero el mysql_real_escape_string() se
>> >> aplica sólo si pasa la validación (fijate que está después del else).
>> >> Se escapan automáticamente a pesar de que tengo en el php.ini ->
>> >> php_flag magic_quotes_gpc 0
>> >>
>> >> me pasa con todos los formularios del sitio...no sé qué será...ya
>> >> probé removiendo el php.ini y sigue igual.
>> >>
>> >> si querés probá en el formulario de suscripción al newsletter (que
>> >> está visible en todo el sitio) tipear algo con comilla simple o doble
>> >> y fijate como imprime: http://salimas.com/mardelplata/eventos.php
>> >>
>> >> tiene este script:
>> >>
>> >> $susmail="Ingres&aacute; tu e-mail";
>> >>
>> >>               if (isset($_POST['suscribirme'])) {
>> >>                                               $susmail=$_POST['email'];
>> >>                                               }
>> >>
>> >> >
>> >> >        Saludos!
>> >>
>> >> Saludos!
>> >>
>> >> >
>> >> > El mar, 16-03-2010 a las 22:34 -0300, Silverzero escribió:
>> >> >> Hola a todos,
>> >> >>
>> >> >> Tengo un problema en el sitio de mi tesis.
>> >> >> En el php.ini hay: php_flag magic_quotes_gpc 0, y antes de insertar a
>> >> >> la DB utilizo mysql_real_escape_string.
>> >> >>
>> >> >> Cuando el form no pasa la validación, imprime las advertencias e
>> >> >> imprime los campos que ya fueron completados, y éstos (aca viene el
>> >> >> problema) si contienen comillas simples las escapa y si hay comillas
>> >> >> dobles, todo el texto que encierran desaparece y en su lugar imprime
>> >> >> una barra invertida.
>> >> >>
>> >> >> Ya hablé con el soporte del hosting y dicen que probaron poner
>> >> >> php_flag magic_quotes_gpc 0 de manera global, pero aún así no
>> >> >> funcionó. Probé instalando todo el sitio en otro hosting y sin embargo
>> >> >> sigue sucediendo lo mismo.
>> >> >>
>> >> >> Acá les envío el formulario, pero lo resumí con un campo sólo, para
>> >> >> que sea más fácil la lectura.
>> >> >>
>> >> >> Saludos!
>> >> >>
>> >> >> <?php
>> >> >> //valor vacío asi no imprime errores cuando no encuentra definida la variable
>> >> >>
>> >> >> $l_titulo="";
>> >> >>
>> >> >>    if (isset($_POST['pub_lug'])){
>> >> >>
>> >> >>        $seccion="lugares";
>> >> >>        $l_titulo=$_POST['titulo'];
>> >> >>
>> >> >>        //valida
>> >> >>        if ($l_titulo==""){
>> >> >>
>> >> >>             $l_alertTit="<span class=\"warning\">No te olvides de
>> >> >> completar el nombre del lugar.</span>";
>> >> >>
>> >> >>        }else{
>> >> >>
>> >> >>               $l_titulo=mysql_real_escape_string($titulo);
>> >> >>
>> >> >>               $sql="INSERT INTO $seccion SET
>> >> >>                        titulo='$l_titulo'
>> >> >>                        fecha=NOW();";
>> >> >>
>> >> >>              $result=mysql_query($sql,$link)or die(mysql_error());
>> >> >>
>> >> >>             print "Publicacion exitosa";
>> >> >>
>> >> >>             //doy valor vacío a los campos para q no se impriman luego
>> >> >> de enviado
>> >> >>            $l_titulo="";
>> >> >>
>> >> >>         }
>> >> >>    }
>> >> >> ?>
>> >> >>
>> >> >>
>> >> >> <form action="user.php?req=pub#lugares" method="post"
>> >> >> enctype="multipart/form-data" name="form">
>> >> >>
>> >> >> <label>Nombre del lugar</label>
>> >> >> <?php print $l_alertTit; ?>
>> >> >> <input name="titulo" type="text" value="<?php print $l_titulo; ?>" />
>> >> >> <input name="pub_lug" type="submit" class="bttn" value="Publicar"
>> >> >> id="pub_lug" />
>> >> >>
>> >> >> </form>
>> >> >
>> >> > --
>> >> >
>> >> > Leonardo Tadei
>> >> > leonardot en pegasusnet.com.ar
>> >> > http://blog.pegasusnet.com.ar
>> >> > Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>> >> >
>> >> > _______________________________________________
>> >> > Php-avanzado mailing list
>> >> > Php-avanzado en pato2.fi.mdp.edu.ar
>> >> > http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>> >> >
>> >>
>> >>
>> >>
>> > --
>> >
>> >
>> > Leonardo Tadei
>> > leonardot en pegasusnet.com.ar
>> > Pegasus Tech Supply
>> > Tel: (+54)(+223) 471-2880
>> > La Salle 1131 - Mar del Plata - Argentina
>> > http://www.pegasusnet.com.ar / http://blog.pegasusnet.com.ar
>> > http://www.prometeustech.com.ar / http://www.grupopegasus.com
>> > Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>> >
>> >
>> > _______________________________________________
>> > Php-avanzado mailing list
>> > Php-avanzado en pato2.fi.mdp.edu.ar
>> > http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>> >
>>
>>
>>
> --
>
>
> Leonardo Tadei
> leonardot en pegasusnet.com.ar
> Pegasus Tech Supply
> Tel: (+54)(+223) 471-2880
> La Salle 1131 - Mar del Plata - Argentina
> http://www.pegasusnet.com.ar / http://blog.pegasusnet.com.ar
> http://www.prometeustech.com.ar / http://www.grupopegasus.com
> Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>
>
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>



-- 
Carolina Derromediz
Cel. +54 223 5301599


Más información sobre la lista de distribución Php-avanzado