Foros del Web » Programando para Internet » PHP »

mysql_escape_string

Estas en el tema de mysql_escape_string en el foro de PHP en Foros del Web. En local la función añade correctamente en la base de datos los caracteres 'extraños' pero en el servidor a todos esos caracteres tipo apostrofes y ...
  #1 (permalink)  
Antiguo 29/03/2005, 13:31
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
mysql_escape_string

En local la función añade correctamente en la base de datos los caracteres 'extraños' pero en el servidor a todos esos caracteres tipo apostrofes y demás añade una barra invertida que guarda junto con el texto... a qué se debe?

Local: pepe's bar
Servidor: pepe\'s bar

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #2 (permalink)  
Antiguo 29/03/2005, 15:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. ese dato de donde llega? .. si llega de un formulario/url en general o cookie .. si usas "magic_quote_gpc=ON" (en tu php.ini, lo puedes ver en un phpinfo() también) es el servidor quien -por defecto- escapa ese tipo de caracteres por tu seguridad ..

mysql_escape_string() los añade si corresponde (los \ de escape)

A la hora de presentar ese dado (obtenido de tu BD) .. debes usar stripslashess() para quitar ese "escape" (\) .. Pero en tu BD es recomendable que quede el dato con el caracter de control "escape" para ese tipo de caracteres como comillas y demás.

Si usas PHP 4.3.0 o superior .. deberias usar:
mysql_real_escape_string()

Puedes usar esta función (créditos en la documentación de PHP sobre dicha función):

Código PHP:
<?php

function escape_string ($string) {
   if(
version_compare(phpversion(),"4.3.0")=="-1") {
     
mysql_escape_string($string);
   } else {
     
mysql_real_escape_string($string);
   }
}
para usar una u otra función dependiendo de la versión de PHP que use el servidor que ejecute dicho código ...


Un saludo,
  #3 (permalink)  
Antiguo 29/03/2005, 16:04
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias cluster.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:34.