[Php-avanzado] Comillas escapadas...

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Mie Mar 17 12:13:28 ARST 2010


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á 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
                



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