[Php-avanzado] Comillas escapadas...

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Mie Mar 17 19:05:06 ARST 2010


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
                



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