Foros del Web » Programando para Internet » PHP »

Problema al escapar caracteres MySQL > Ayuda

Estas en el tema de Problema al escapar caracteres MySQL > Ayuda en el foro de PHP en Foros del Web. Buenas a todos, les muestro mi script y luego les explico: Código PHP: //Tomo el campo POST des_baj, le quito los tags HTML // y paso sus caracteres a códico HTML. $des_baj  =  htmlentities ( strip_tags ( $_POST [ 'des_baj' ])); ...
  #1 (permalink)  
Antiguo 11/06/2005, 11:36
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
Problema al escapar caracteres MySQL > Ayuda

Buenas a todos, les muestro mi script y luego les explico:
Código PHP:
//Tomo el campo POST des_baj, le quito los tags HTML
// y paso sus caracteres a códico HTML.
$des_baj htmlentities(strip_tags($_POST['des_baj']));
//los chars [ los convierto en >
$des_baj str_replace("[""<"$des_baj);
//los chars ] los convierto en <
$des_baj str_replace("]"">"$des_baj);
//los chars | los convierto en "
$des_baj str_replace("|""\""$des_baj);
//y ahora escapo los caracteres para que sean seguros al MySQL
$des_baj mysql_real_escape_string($des_baj); 
Aclaración: los chars [, ] y | los uso para poder incluir tags HTML y que los símbolos <, > y " no sean pasados a código por el htmlentities.

Bien, el tema es que si miro el MySQL para ver el registro que creé encuentro lo siguiente:
\&quot;comillas\&quot; html y "comillas de verdad"
cuando en realidad yo ingresé en el formulario:
"comillas" html y |comillas de verdad|.

qué puede andar fallando?? porqué escapa los &quot y no las " verdaderas??

espero su ayuda
  #2 (permalink)  
Antiguo 11/06/2005, 11:41
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 16 años, 4 meses
Puntos: 9
En donde estás viendo el MySQL, en phpMyAdmin, en Mysql Administrator o en donde?
  #3 (permalink)  
Antiguo 11/06/2005, 11:51
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
en PHPMyAdmin y en un archivo de test que utilizo para ver que resultados se enviaron al MySQL...

quiero llorar

miren el siguiente resultado, de una hoja PHP (con el mismo script que les mostre antes) al ingresar el texto "Hola":
\"Hola\" < txt original
\"Hola\" < txt luego de strip_tags
\&quot;Hola\&quot; < txt luego de htmlentities
pasos intermedios sin importancia...
\\&quot;Hola\\&quot; < txt luego de mysql_real_escape_string

aclaración, las primeras \" las pone PHP al utilizar echo, para escaparlas, pero MySQL no las recibe
  #4 (permalink)  
Antiguo 11/06/2005, 12:35
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
bueno, la solución que encontré fue cambiar lo siguiente:
Código PHP:
$des_baj str_replace("|"chr(92).chr(34), $des_baj); 
para generar una \", la cual queda bien escapada..

la lástima es que el malditlo escape_string, al igual que el addslashes, escapa algo ridículo... un &quote.. quedando \&quot; <<
está bien que no se me van a caer las pestañas por el byte que representa ese \... pero es molesto que PHP "haga lo que quiera" en casos como este.

si alguien encuentra solución, bienvenido sea!
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 14:16.