Foros del Web » Programando para Internet » PHP »

problema con las comillas en una consulta de sql

Estas en el tema de problema con las comillas en una consulta de sql en el foro de PHP en Foros del Web. Hola, A ver si alguien me hecha una mano con este pequeño problema. Resulta que tengo un formulario para que la gente haga comentarios en ...
  #1 (permalink)  
Antiguo 09/02/2009, 16:37
DMR
 
Fecha de Ingreso: noviembre-2003
Mensajes: 105
Antigüedad: 20 años, 6 meses
Puntos: 0
Pregunta problema con las comillas en una consulta de sql

Hola,

A ver si alguien me hecha una mano con este pequeño problema.

Resulta que tengo un formulario para que la gente haga comentarios en una web que estoy haciendo.

La cosa es que he probado a usar esta funcion:

function texto($txt) {
$txt=str_replace("&","&",$txt);
$txt=str_replace("<","&lt;",$txt);
$txt=str_replace(">","&gt;",$txt);
$txt=str_replace(" "," &nbsp;",$txt);
$txt=str_replace(";","",$txt);
$txt=str_replace(chr(92) . "\"","&quot",$txt);
$txt=str_replace(chr(92) . "'","'",$txt);
$txt=str_replace(chr(92) . chr(92),chr(92),$txt);
return $txt;
}


No se si hay algo mas que deba incluir... con el fin de evitar que me pongan codigo html o alguna cosa que me joda la web.

La cosa es que, si me ponen una comilla simple como esta '

me da un error la consulta de sql.

Código:
consulta_db("INSERT cf_comentarios (`nick`,`email`,`comentario`,`id_noticia`) VALUES ('$nombre','$email','$comentario','$idnoticia')");
La cosa es que he probado a poner algo como que $txt=str_replace("'","\'",$txt);

Pero no me la hace.

Supongo que habrá algún mecanismo o algo pero no se me ocurre.

----------------------------------------------------------------------------------------

Por cierto, tengo la web en utf8, pero muchas veces tengo que usar el utf8_decode o el utf8_encode para mostrar segun que caso algunas cosas...

----------------------------------------------------------------------------------------

Mil Gracias.
  #2 (permalink)  
Antiguo 09/02/2009, 16:48
Avatar de danideu  
Fecha de Ingreso: febrero-2005
Ubicación: Barcelona
Mensajes: 213
Antigüedad: 19 años, 2 meses
Puntos: 5
Respuesta: problema con las comillas en una consulta de sql

conoces la función HtmlEntities?

Aqui tienes un ejemplo:

<?php
$str = "A 'quote' is <b>bold</b>";

// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str);

// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str, ENT_QUOTES);
?>


Puedes ver el manual en la web de PHP

http://es2.php.net/htmlentities

Saludos.
  #3 (permalink)  
Antiguo 09/02/2009, 16:55
 
Fecha de Ingreso: febrero-2009
Mensajes: 25
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema con las comillas en una consulta de sql

Probá con addslashes Debería de cambiar las comillas y otros caracteres.

Cuando necesites traer esa cadena stripslashes

Pd. No pongo links porque no tengo antiguedad para ponerlos.
  #4 (permalink)  
Antiguo 09/02/2009, 21:35
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema con las comillas en una consulta de sql

Al guardar un dato ingresado por un usuario en una base de datos, siempre recomiendo guardarlo tal y como lo puso originalmente. Para esto, lo único que debemos tener en cuenta en cuanto a seguridad se refiere es protegernos del ataque de Inyección SQL (SQL Injection). PHP dispone de una función que asegura nuestro código, y es mysql_real_escape_string(). Al aplicar esta función a cada dato que deseamos ingresar a la base de datos nos protegemos de forma efectiva de las inyecciones sql sin modificar el dato ingresado a la base de datos. Es una versión de addslashes() optimizada para consultas sql.

Ahora, hablando de código HTML. Existen varias formas de protegerse del mismo. Una es usando htmlentities()/htmlspecialchars(), como ya te recomendaron más arriba. Lo que hacen estas dos funciones es convertir caracteres usados en el código HTML en entidades imprimibles en pantalla. La primera abarca más que la segunda. En resumen, imprimen el código literalmente en vez de ejecutarlo.

strip_tags() es otra opción, recomendable cuando deseas darle a tu usuario la posibilidad de introducir cierto html "permitido". En este caso también debes tener en cuenta el Cross-Site Scripting (XSS).

Como ves, hay riesgos a diferentes niveles, y para cada riesgo hay una manera de protegerse. Usa las opciones necesarias, que no se trata de meter todo lo que uno encuentra indiscriminadamente. En tu caso, creo que basta con usar mysql_real_escape_string() para insertar los datos, y htmlspecialchars() para mostrarlos.

  #5 (permalink)  
Antiguo 10/02/2009, 02:20
DMR
 
Fecha de Ingreso: noviembre-2003
Mensajes: 105
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: problema con las comillas en una consulta de sql

Muchas gracias.

Probare a ver que me sale.
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 13:41.