Tutoriales PHP MYSQL Registro y reconocimiento de usuarios con PHP

\n"; } } } lecturas();

          


Registro y reconocimiento de usuarios con PHP

      

Autor: Jorge Luis Martinez M

En esta oportunidad crearemos un sistema de registro de usuarios utilizando a PHP.

¿En que consiste? y ¿para que sirve? muy sencillo, en algunas webs como por ejemplo esta, queremos interactuar con los usuarios, deseamos que estos puedan enviar scripts al sistema para ayudar a crecer la coleccion de scripts que disponemos, pero deseamos llevar un control sobre los autores de los scripts asi que no cualquiera puede enviar scripts, para hacerlo tienes que registrarte y hacer el respectivo "ingreso" para que el sistema te reconosca y te deje enviar scripts, archivos y articulos como este, de otra manera no puedes hacer ninguna de estas acciones.

¿Pero como se logra esto?, se hace teniendo en una base de datos una tabla de usuarios(Podria hacerse con archivos, aunque seria un poco inseguro) y por medio de archivos PHP y manejo de sesiones(session) o por "cukis"(cookies).

En este articulo explicare como crear un sistema de registro y reconocimiento de usuarios teniendo una tabla en una base de datos MySql y por medio de "cukis"(COOKIES) para nuestra web de una manera sencilla.

A la hora de crear un sistema de registro de usuarios siempre pensamos en lo mismo:

registro + login + reconocimiento

Queremos que los usuarios se registren dejando sus datos y puedan acceder a algunas zonas de la pagina y sea reconocido por nuestra pagina(por ejemplo "bienvenido jlmm" o "bienvenido visitante" en caso de no estar ingresado (o registrado) en el sistema).

Muchos piensan en crear un sistema de usuarios por que les parece "bonito", pero hay pocos que realmente lo necesitan(lo digo por experiencia con dichas personas), y cuando les haces las dos preguntas:

1- ¿que beneficios tienen los usuarios registrados con respecto a los demas?

2- ¿que zonas de tu web quieres que sean de acceso restringido y PORQUE?

La mayoria no es capaz de responder la primera pregunta, y es que antes de aventurarnos a crear un sistema de usuarios para nuestra web debemos de pensar si realmente vale la pena, ya que las tematicas de la web y sus contenidos no siempre son adecuados para tener un sistema de registro de usuarios.

Para ello respondemos las 2 preguntas, en el caso de misCODIGOS.com serian:

1- ¿que beneficios tienen los usuarios registrados con respecto a los demas?

R://Posibilidad de enviar scripts, articulos y archivos al sistema, al igual que disponibilidad de un panel de control entre otros.

2- ¿que zonas de tu web quieres que sean de acceso restringido y PORQUE?

R://Quiero que solo los usuarios que esten registrados puedan enviar scripts/articulos/archivos, ya que asi puedo llevar un mejor cotrol sobre los mismos y prevenir el envio indiscriminado de scripts/articulos/archivos al sistema por parte de los usuarios.

Ya tenemos nuestras razones para crear nuestro sistema de registro de usuarios, claro que pueden haber muchas razones dependiendo del tipo de web, podrian ser por ejemplo para que solo usuarios registrados puedan bajar software/musica/videos/etc, para restringir el acceso a ciertas zonas de la web "obligando" al usuario a registrarse para poder "ver" dicha zona, etc...

Siempre teniendo en cuenta que las razones sean validas y que no molesten al usuario, ya que en mi caso hace algunos meses me encontre con una web de "scripts" la cual para poder ver los "scripts" tenias que registrarte, obviamente lo que hice fue salir de esa web y olvidarla (por ello no les puedo dar la direccion), tenemos que tener muy en cuenta que zonas restringir a usuarios registrados ya que el usuario en general prefiere la comodidad y en este caso que les comento de webs con recursos y scripts para webmasters hay muchas (pero ninguna como esta :-P) y hay que buscar siempre la comodidad de los usuarios.

Ahora a lo que vinimos, crearemos nuestro sistema de registro de usuario, lo primero que debemos pensar es que datos debera introducir el usuario para registrarse, como siempre deberan de haber aunque sea dos campos basicos:

Lo mas común para identificar a los usuarios es por medio de nick/password, aunque también podria ser email/password, para este articulo utilizare el primero(nick/password).

Ya sabemos que nuestra tabla de "usuarios" tendra esos dos campos:

  1. CREATE TABLE usuarios (
  2. id bigint(7) NOT NULL AUTO_INCREMENT,
  3. nick char(100) NOT NULL,
  4. password char(100) NOT NULL,
  5. KEY id (id))

¿Pero son suficientes?, tambien seria bueno tener el email de los usuarios en caso de querer enviar informacion a los usuarios registrados y tener el nombre de dichos usuarios para personalizar dichos emails o mensajes que le demos al usuario en la pagina(ejemplo "hola jorge luis"), entonces nuestra tabla creceria un poco:

  1. CREATE TABLE usuarios (
  2. id bigint(7) NOT NULL AUTO_INCREMENT,
  3. nick char(100) NOT NULL,
  4. password char(100) NOT NULL,
  5. nombre char(255) DEFAULT NULL,
  6. email char(100) DEFAULT NULL,
  7. KEY id (id))

Listo, ya tenemos la estructura de nuestra tabla de usuarios, es pequeña y sencilla pero para efectos prácticos y de aprendizaje es perfecta (eso depende de ti, según lo que desees saber de tus usuarios).

Ahora viene lo sencillo, crear el sistema de registro de usuarios, un formulario y una aplicacion que agregue al nuevo usuario a la base de datos, para ello crearemos un formulario del tipo:

  1. <FORM ACTION="/articulos/tutoriales/php/registrar.html" METHOD="post">
  2. Nick: <INPUT TYPE="text" NAME="nick" SIZE="20" MAXLENGTH="20">
  3. Email: <INPUT TYPE="text" NAME="email" SIZE="28" MAXLENGTH="100">
  4. Password: <INPUT TYPE="password" NAME="password" SIZE="28" MAXLENGTH="20">
  5. Nombre: <INPUT TYPE="text" NAME="nombre" SIZE="28" MAXLENGTH="255">
  6. <INPUT TYPE="submit" CLASS="boton" VALUE="Registrar">
  7. </FORM>

Y ahora necesitamos una aplicacion que lo procese (/articulos/tutoriales/php/registrar.html), por motivos practicos haremos algo sencillo sin demasiadas comprobaciones (dependera de ti mejorarlo si quieres algo mas personalizado), primero el codigo luego la explicacion:

  1. <?php
  2. //AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.
  3. function quitar($mensaje)
  4. {
  5. $mensaje = str_replace("<","&lt;",$mensaje);
  6. $mensaje = str_replace(">","&gt;",$mensaje);
  7. $mensaje = str_replace("\'","'",$mensaje);
  8. $mensaje = str_replace('\"',"&quot;",$mensaje);
  9. $mensaje = str_replace("\\\\","\\",$mensaje);
  10. return $mensaje;
  11. }
  12.  
  13. if(trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["email"]) != "")
  14. {
  15. $sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"])."'";
  16. $result = mysql_query($sql);
  17. if($row = mysql_fetch_array($result))
  18. {
  19. echo "Error, nick escogido por otro usuario";
  20. }
  21. else
  22. {
  23. $sql = "INSERT INTO usuarios (nick,password,nombre,email) VALUES (";
  24. $sql .= "'".quitar($HTTP_POST_VARS["nick"])."'";
  25. $sql .= ",'".quitar($HTTP_POST_VARS["password"])."'";
  26. $sql .= ",'".quitar($HTTP_POST_VARS["nombre"])."'";
  27. $sql .= ",'".quitar($HTTP_POST_VARS["email"])."'";
  28. $sql .= ")";
  29. mysql_query($sql);
  30. echo "Registro exitoso!";
  31. }
  32. }
  33. else
  34. {
  35. echo "Debe llenar como minimo los campos de email y password";
  36. }
  37. ?>

Al principio no he echo conexion con la base de datos pero he puesto el comentario "//AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.", ya que la conexion depende de ti, si no sabes como hacer una conexion te aconsejo buscarte un manual antes de estar queriendo hacer un sistema como este.

Vemos que he declarado una funcion, llamada quitar($mensaje), la cual recibe el parametro "mensaje", esta funcion se encargara de deshabilitar el codigo html("<" y ">") al reemplazarlos por su respectivo codigo("<" y ">"), ademas de reemplazar el apostrofe(') y las comillas dobles(") por sus respectivos codigos HTML, esto para no tener conflictos con la instruccion sql, y al final retorna la cadena con las nuevas modificaciones en caso de haberlas:

  1. function quitar($mensaje)
  2. {
  3. $mensaje = str_replace("<","&lt;",$mensaje);
  4. $mensaje = str_replace(">","&gt;",$mensaje);
  5. $mensaje = str_replace("\'","'",$mensaje);
  6. $mensaje = str_replace('\"',"&quot;",$mensaje);
  7. $mensaje = str_replace("\\\\","\\",$mensaje);
  8. return $mensaje;
  9. }
Scour Design ™ Todos los Derechos Reservados © Carlos Carmona Xhtml 1.1 Strict Válido!CSS Nivel 2 Válido! Nivel Triple-A de Conformidad con las Directrices de Accesibilidad Web (WAI)