eZakto
Member
- Messages
- 782
- Reaction score
- 1
- Points
- 18
Al ver muchas dudas de lo mismo en otros foros, supongo que quizá ayude a alguien aquí
Registro de Usuarios / Login con php.
Vemos en muchos portales, foros, blogs, etc. lo mismo: Registro y login de usuarios, ¿y a quién no se le ha cruzado la idea de implementar eso en su web? Cuando no utilizamos un CMS, tenemos que buscar/programar nuestro propio sistema de usuarios, cosa que a pesar de parecerlo, no es difícil.
Comenzando...
Primero debemos saber qué datos necesitará nuestro usuario para registrarse. Lo más usual es nombre de usuario, contraseña y mail. Comenzaremos creando una base de datos MySQL (O usando una que tengamos creada ya, a gusto) y añadiendo una nueva tabla, que llamaremos sys_users. La tabla tendrá 4 campos: id, user, pass, mail. Donde id será int(32), y el resto tinytext. Puedes crearla manualmente ó automáticamente ejecutando la siguiente sentencia sql:
Bien. Eso habrá creado una tabla con los 4 campos, asignando al campo id como campo primario y de auto-incremento (Es decir, no será necesario especificar un valor para este campo por cada usuario, se asignará solo).
El formulario
Ya teniendo la tabla en nuestra base de datos, es necesario hacer el formulario por el cual los usuarios ingresarán sus datos para registrarse, para luego insertarlos. Esta es la parte más sencilla. Haremos un formulario que envíe los datos a reg.php por medio del método POST, y que conste de 4 campos: Usuario, contraseña, confirmar contraseña, mail.
Hay que prestar atención al nombre de cada campo (El atributo 'name'), porque ese será el nombre del elemento cuando lo manipulemos con php. Bien, ahora pasamos al código php.
El archivo reg.php
Este archivo, al que se le enviarán las variables, constará de 3 partes: Comprobación, ejecución y confirmación (Que lindo ha quedado ). En la primera parte, nos aseguraremos de que se compruebe que los datos son correctos, en la segunda, añadiremos los usuarios a la base de datos, y en la tercera mostraremos el mensaje de éxito.
Comenzamos con la comprobación:
Ahora pasamos al centro de los ifs, donde ha quedado el espacio para la ejecución. Simplemente habrá que ejecutar una sentencia sql y mostrar el mensaje de confirmación. Veamos:
Y así es como hemos logrado un sistema simple de usuarios. Claro que se pueden agregar muchas más comprobaciones avanzadas, como comprobar la sintaxis del mail (Que contenga @ y punto, etc), que el usuario/contraseña sea de más de 3 carácteres, que el usuario no exista antes, envío de correo de activación de cuenta y demás. Pero eso será para otro día
(Segunda parte abajo)
Registro de Usuarios / Login con php.
Vemos en muchos portales, foros, blogs, etc. lo mismo: Registro y login de usuarios, ¿y a quién no se le ha cruzado la idea de implementar eso en su web? Cuando no utilizamos un CMS, tenemos que buscar/programar nuestro propio sistema de usuarios, cosa que a pesar de parecerlo, no es difícil.
Comenzando...
Primero debemos saber qué datos necesitará nuestro usuario para registrarse. Lo más usual es nombre de usuario, contraseña y mail. Comenzaremos creando una base de datos MySQL (O usando una que tengamos creada ya, a gusto) y añadiendo una nueva tabla, que llamaremos sys_users. La tabla tendrá 4 campos: id, user, pass, mail. Donde id será int(32), y el resto tinytext. Puedes crearla manualmente ó automáticamente ejecutando la siguiente sentencia sql:
Code:
CREATE TABLE `sys_users` ( `id` INT( 32 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`user` TINYTEXT NOT NULL ,
`pass` TINYTEXT NOT NULL ,
`mail` TINYTEXT NOT NULL
) ENGINE = MYISAM
El formulario
Ya teniendo la tabla en nuestra base de datos, es necesario hacer el formulario por el cual los usuarios ingresarán sus datos para registrarse, para luego insertarlos. Esta es la parte más sencilla. Haremos un formulario que envíe los datos a reg.php por medio del método POST, y que conste de 4 campos: Usuario, contraseña, confirmar contraseña, mail.
HTML:
<form method="post" action="reg.php">
Usuario:<br />
<input type="text" name="r_user" /><br />
Contraseña:<br />
<input type="password" name="r_pass" /><br />
Confirmar contraseña:<br />
<input type="password" name="r_pass_c" /><br />
Mail:<br />
<input type="text" name="r_mail" /><br />
<br />
<input type="submit" value="Registrarse" />
</form>
El archivo reg.php
Este archivo, al que se le enviarán las variables, constará de 3 partes: Comprobación, ejecución y confirmación (Que lindo ha quedado ). En la primera parte, nos aseguraremos de que se compruebe que los datos son correctos, en la segunda, añadiremos los usuarios a la base de datos, y en la tercera mostraremos el mensaje de éxito.
Comenzamos con la comprobación:
PHP:
<?php
// Primero, transformamos los datos recibidos en entidades html para evitar inyecciones sql
$r_user = htmlentities($_POST['r_user'], ENT_QUOTES);
$r_pass = htmlentities($_POST['r_pass'], ENT_QUOTES);
$r_pass_c = htmlentities($_POST['r_pass_c'], ENT_QUOTES);
$r_mail = htmlentities($_POST['r_mail'], ENT_QUOTES);
// Comprobamos que se haya escrito un nombre de usuario
if($r_user != "") {
// Ahora comprobamos lo mismo para el mail
if($r_mail != "") {
// Para la contraseña... {
if($r_pass != "") {
// Bien, ahora comprobaremos que las 2 contraseñas escritas sean iguales:
if($r_pass === $r_pass_c) {
/* Todo comprobado. Aquí irá el código de ejecución.
Pero antes, cerraremos los ifs con el mensaje de error */
} else {
echo 'Las contraseñas ingresadas no coinciden.<br /><a href="history.back();return false;"<< Atrás</a>';
}
} else {
echo 'Debes ingresar una contraseña.<br /><a href="history.back();return false;"<< Atrás</a>';
}
} else {
echo 'Debes ingresar una dirección de correo electrónico.<br /><a href="history.back();return false;"<< Atrás</a>';
}
} else {
echo 'Debes ingresar un nombre de usuario.<br /><a href="history.back();return false;"<< Atrás</a>';
}
?>
PHP:
<?php
// Primero, transformamos los datos recibidos en entidades html para evitar inyecciones sql
$r_user = htmlentities($_POST['r_user'], ENT_QUOTES);
$r_pass = htmlentities($_POST['r_pass'], ENT_QUOTES);
$r_pass_c = htmlentities($_POST['r_pass_c'], ENT_QUOTES);
$r_mail = htmlentities($_POST['r_mail'], ENT_QUOTES);
// Comprobamos que se haya escrito un nombre de usuario
if($r_user != "") {
// Ahora comprobamos lo mismo para el mail
if($r_mail != "") {
// Para la contraseña... {
if($r_pass != "") {
// Bien, ahora comprobaremos que las 2 contraseñas escritas sean iguales:
if($r_pass === $r_pass_c) {
// Todo comprobado.
// Encriptamos la contraseña para alta seguridad:
$enc_pass = md5($r_pass);
// Ejecutamos la sentencia
mysql_query("INSERT INTO sys_users(user,pass,mail) VALUES('{$r_user}','{$enc_pass}','{$r_mail}')");
// Ahora mostramos la confirmación:
echo 'Te has registrado con éxito. Ahora puedes iniciar sesión con tu usuario y contraseña';
} else {
echo 'Las contraseñas ingresadas no coinciden.<br /><a href="history.back();return false;"<< Atrás</a>';
}
} else {
echo 'Debes ingresar una contraseña.<br /><a href="history.back();return false;"<< Atrás</a>';
}
} else {
echo 'Debes ingresar una dirección de correo electrónico.<br /><a href="history.back();return false;"<< Atrás</a>';
}
} else {
echo 'Debes ingresar un nombre de usuario.<br /><a href="history.back();return false;"<< Atrás</a>';
}
?>
(Segunda parte abajo)
Last edited: