Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/10/2005, 09:24
Tigervlc
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 10 meses
Puntos: 3
Un poco de información sobre el tema de los caracteres de escape para los caracteres especiales (comillas, etc):

Hay un comando de configuración en php.ini que se llama magic_quotes_gpc. El gpc se refiere a datos de entrada GET, POST y Cookies.

Puede tener el valor on o off. Si está a on, dentro de los datos de entrada, los caracteres especiales automáticamente se escapan con \ como parece ser tu caso.

Si está a off, es necesario escapar los caracteres especiales con addslashes("cadena"); y al recuperarlos de la base de datos se les quitan los caracteres de escape con stripslashes("cadena");

Para comprobar si magic_quotes_gpc está activado o no se usa la función get_magic_quotes_gpc(), que devuelve true si está a on y false si está a off.

De esta forma, independientemente de cómo lo dejes configurado, (yo lo dejo así: magic_quotes_gpc=off en php.ini) es recomendable SIEMPRE hacer la comprobación antes de almecenar datos de entrada:

Código PHP:
if (!get_magic_quotes_gpc()) {
      
$cadenaDeEntrada addslashes($cadenaDeEntrada);

y esto con los datos de salida

Código PHP:
$cadenaDeSalida stripslashes($cadenaDeSalida); 
De esta forma se evitarán esos errores en todo momento.

En los datos de salida, según se requiera, también se utiliza el filtro htmlspecialchars() que convierte los caracteres especiales de HTML en caracteres ASCII. Por ejemplo si una cadena de salida del nombre de una compañía nos tiene que dar: 'Daddy & Co.', y no deseamos que aparezca así: \'Daddy & Co.\', deberemos usar stripslashes() para quitar las secuencias de escape y htmlspecialchars() para convertir & en &.

Última edición por Tigervlc; 21/10/2005 a las 09:31