Foros del Web » Programando para Internet » PHP »

Cadena segura

Estas en el tema de Cadena segura en el foro de PHP en Foros del Web. Recuerdo haber leído en alguno de los tutoriales de PHP en este foro que había una función para convertir las cadenas en cadenas seguras, pero ...
  #1 (permalink)  
Antiguo 10/06/2005, 14:07
Avatar de Solid  
Fecha de Ingreso: enero-2003
Ubicación: Argentina
Mensajes: 180
Antigüedad: 21 años, 2 meses
Puntos: 0
Cadena segura

Recuerdo haber leído en alguno de los tutoriales de PHP en este foro que había una función para convertir las cadenas en cadenas seguras, pero busqué y busqué y no lo pude volver a encontrar...

Con cadena segura me refiero a una cadena segura de no causar problemas al usarla en mySQL o construyendo otras cadenas...

En mi caso en particular armo dinámicamente un query SQL de, digamos, la siguiente manera...


$query = "SELECT * FROM tabla WHERE nombre = '" . $nombre . "' ORDER BY nombre";

El problema con este query sería que si la variable $nombre toma un valor "Pepe's" entonces hay conflicto con cadenas, porque al usarla quedaría como...

SELECT * FROM table WHERE nombre ='Pepe's' ORDER By nombre"

Se entiende lo que digo ?

Podría hacerlo a mano con un substr si recordara cual era el código seguro que representa a los apóstrofes, pero estoy seguro que había una función que reemplazaba todos estos caractéres no seguros automáticamente.
__________________
Just because I rock doesn't mean I'm stone
  #2 (permalink)  
Antiguo 10/06/2005, 14:19
 
Fecha de Ingreso: mayo-2005
Mensajes: 201
Antigüedad: 18 años, 10 meses
Puntos: 2
Bueno aqui hay un detalle siempre y cuando no este avilitado la directiva magic_quotes_gpc generalmente usas las funciones:
  • addslashes()
  • stripslashes()
  • mysql_real_escape_string()
  • mysqli_escape_string (para mysql 4.1)
  • mysqli_real_escape_string(para mysql 4.1)
Para manipular el scape de caracteres. Asi que revisa la lista y date una vuelta por el manual de php para que determines que es lo que necesitas para tu caso en concreto.

Saludos.
  #3 (permalink)  
Antiguo 10/06/2005, 14:24
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Si es un str, podes usar addslaseh para comparaciones:
$query = "SELECT * FROM tabla WHERE nombre = '" . addslashes($nombre) . "' ORDER BY nombre";
O un str_replace de de la comilla tambien te seviria. Pero como tenes varios caracteres "jodidos", podes armarte una funcion reemplazando cada uno, de manera simple, mas o menos asi:
function limpiar($str){
$str= str_replace("'", "`", $str);
$str= str_replace("\"", "`", $str);
$str= str_replace("--", "", $str);
#Y todo el que quieras, o tambien palabras reservadas como having, group by, pero para eso tendrías que hacer una funcion input y otra de output.
return $str;
}


Despues tenes funciones propias de php para salvar las papas, como ser, stripcslashes(), stripslashes(), htmlspecialchars(), quotemeta(), y tambien propias de mysql segun la version que este usando.

Mas info www.php.net
www.mysql.com
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #4 (permalink)  
Antiguo 10/06/2005, 14:25
Avatar de Solid  
Fecha de Ingreso: enero-2003
Ubicación: Argentina
Mensajes: 180
Antigüedad: 21 años, 2 meses
Puntos: 0
muchas gracias, ahora lo pruebo
__________________
Just because I rock doesn't mean I'm stone
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 20:34.