Foros del Web » Programando para Internet » PHP »

Ayuda con registro de usuarios (como debo enviar la variable "user" a la db?)

Estas en el tema de Ayuda con registro de usuarios (como debo enviar la variable "user" a la db?) en el foro de PHP en Foros del Web. bueno esta duda va mas que nada, por que.. todos saben que "como se envia el usuario a la base de datos" es algo que ...
  #1 (permalink)  
Antiguo 14/07/2009, 01:52
 
Fecha de Ingreso: julio-2009
Mensajes: 19
Antigüedad: 14 años, 9 meses
Puntos: 0
Ayuda con registro de usuarios (como debo enviar la variable "user" a la db?)

bueno esta duda va mas que nada, por que.. todos saben que "como se envia el usuario a la base de datos"
es algo que va por el punto de seguridad, etc...
(aunque la clave ya no me complica tanto por que esa se encrypta en md5)

pero el usuario... que cosas le puedo hacer al nombre de usuario para que este no haga daño al código html, ni a las peticiones a la base de datos...

e estado mirando y hay códigos en los que solamente hacen un "stripslashes" a la hora de registrar el usuario y al hacer el ingreso a la web, pero en verdad no le allo el sentido a esto...

lo que encuentro mas util es usar "addslashes" para que se añadan "\" ante ciertos símbolos (\ -> \\, " -> \"),
por ejemplo si tengo el nombre Carro's me lo deja como Carro\'s en la base de datos y al tenerlo en una variable le hago "stripslashes" y lo imprimo...

pero aun asi, quedan otros símbolos...

también se que puedo usar la función "htmlspecialchars()"

pero aun asi, quedan "otros" símbolos indeseables.. pero para poder eliminar ciertos símbolos de los nombres de usuarios simplemente interfiero a la hora de registrar un usuario, negandole el uso de ciertos símbolos...

pero de todas formas, si no hiciera esto, como podría hacer seguro el registro y los nombres de usuario a la hora de estar en la base de datos??...

espero que alguien me entienda y me ayude xD... estoy hace 2 dias tratando de hacer un sistema de usuarios / registro / perfil.. y esto es lo único que me a dejado trabado...


Gracias...
  #2 (permalink)  
Antiguo 14/07/2009, 08:13
Avatar de maycol_alvarez  
Fecha de Ingreso: julio-2009
Mensajes: 31
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Ayuda con registro de usuarios (como debo enviar la variable "user" a la d

No tienes problemas con el escapado de cadenas, tienes problemas de CODIFICACIÓN, revisa el meta de tus paginas:

Código:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
y la codificación de tu base de datos, debe ser la misma, de lo contrario tienes que codificar / decodificar al leer/grabar en tu base de datos.

utf8_encode: de iso a utf8

utf8_decoce: de utf8 a iso

htmlentities: solo convierte los caracteres especiales a sus entidades xml: á por ejemplo es &aacute;

te recomiendo que en tu base y tus paginas uses utf-8.

si utilizas mysql, te puede servir al grabar este comando sql: SET NAMES 'utf8'; antes de cada insert o update; si tienes una conexion persistente (no recomendado) debes llamar: SET NAMES 'latin1'; al leer

Escapar una cadena evita las inyecciones SQL

Última edición por maycol_alvarez; 14/07/2009 a las 08:20
  #3 (permalink)  
Antiguo 14/07/2009, 21:06
 
Fecha de Ingreso: julio-2009
Mensajes: 19
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Ayuda con registro de usuarios (como debo enviar la variable "user" a la d

maycol, no entiendo muy bien...
me podrias explicar un poco mejor??
osea me refiero...
sql: SET NAMES 'utf8'

nunca e entendido todo este cuento de la codificacion iso, utf, etc...
estuve buscando en la net una ves y no encontre nada..
agradeceria algo de ayuda
  #4 (permalink)  
Antiguo 15/07/2009, 10:16
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Ayuda con registro de usuarios (como debo enviar la variable "user" a la d

Primer paso: verifica la codificación de las tablas en tu base de datos
Segundo paso: verifica la codificación de tus paginas en el meta

Ambas deben ser la misma, para que asi no tengas problemas al mostrar resultados y grabar, es recomendable el uso de utf-8, es más practico y cubre la mayoría de los caracteres.

Al actualizar tus bases de datos a la nueva codificación, es posible que aprecies cambio en las cadenas que tenían acentos y la ñ, por lo que deberás refrescar la data para corregirla.

Si es mucha data y no te queda opción de seguir como vas, no te queda de otra que transformar los resultados tanto al leer como al grabar, por ejemplo:

Al leer utiliza: utf8_encode($valordecampo['campo']);

y cada vez que grabes, ejecuta este sql: SET NAMES 'utf8'; antes de cualquier Insert o update, si no te tocará DECODIFICAR cada entrada de input con utf8_decode:

Código PHP:
$sql="insert into tabla (campo) values(".utf8_decode($_POST['campo']).");"
  #5 (permalink)  
Antiguo 15/07/2009, 10:35
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Ayuda con registro de usuarios (como debo enviar la variable "user" a la d

Podrías utilizar expresiones regulares para controlar lo que el usuario pone como nombre, si te creas una expresión regular que permita caracteres desde a-z A-Z 0-9 ya está, ya no tienes que complicarte si el usuario te mete un < o un & o un = ... (más que nada porque esos caracteres ya los estas denegando de antemano)

P.D: Siempre y cuando haya entendido bien la pregunta, porque la gente te esta respondiendo por el lado de la codificación de caracteres, que creo que no es tu problema. ¿o soy yo el qué ha interpretado mal?
  #6 (permalink)  
Antiguo 20/07/2009, 10:50
 
Fecha de Ingreso: julio-2009
Mensajes: 19
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Ayuda con registro de usuarios (como debo enviar la variable "user" a la d

si ronin, tu le acertaste a lo que buscaba..
de todas formas igual agradesco el resto de comentarios, me han ayudado un monton...

AUNQUE!....
luego igual me surgio la duda, como poder poner caracteres como ".::()/\ª#@::.", etc...
aunque creo que esto lo buscare solo probando...

gracias a todos
  #7 (permalink)  
Antiguo 20/07/2009, 11:25
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Ayuda con registro de usuarios (como debo enviar la variable "user" a la d

En la expresión regular que crees añades esos caracteres que quieres permitir.

Aunque personalmente permitir poner como nombre de usuario una contrabarra, por ejemplo, me da un poco de pánico. Si permites esas cosas luego vigila bien la forma de "imprimir" los nicks, no vaya a ser que por culpa de una carácter de esos...
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 18:11.