Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
En este post muestro como crear un simple formulario de registro de usuarios con PHP, MySQL, y password hash.
El sistema tiene formulario de registro, login, manejo de sesiones, password hash y recuperación de password.
En el siguiente ejemplo supone que ya tienes la BD creada con una columna llamada nombre_usuario y otra password.
Trata de usar los nombres que utilizamos en este ejemplo para que te funcione bien.
Primero crea
VELOZITYWEB BLOG
un directorio llamado “phpLogin“
una pagina HTML llamada “index.html“
y una pagina PHP llamada “registrar-usuario.php“
index.html
1 <!DOCTYPE html>
2 <html lang="en">
3
4 <head>
5 <title>Registrar Usuario</title>
6 <meta charset = "utf-8">
7 </head>
8
9 <body>
10 <header>
11 <h1>Registrate en nuestro fabuloso website</h1>
12 </header>
13
14 <form action="registrar-usuario.php" method="post">
15 <hr />
16 <h3>Crea una cuenta</h3>
17
18 <!--Nombre Usuario-->
19 <label for="nombre">Nombre de Usuario:</label><br>
20 <input type="text" name="username" maxlength="32" required>
21 <br/><br/>
22
23 <!--Password-->
24 <label for="pass">Password:</label><br>
25 <input type="password" name="password" maxlength="8" required>
26
27 <br/><br/>
28 <input type="submit" name="submit" value="Registrarme">
29 <input type="reset" name="clear" value="Borrar">
30 </form>
31
32 <footer>
33 ©2016 <a href="http://www.VelozityWeb.com">www.VelozityWeb.com</a>
34 </footer>
35
36 </body>
37 </html>
Codigo PHP
registrar-usuario.php
1 <?php
2
3 $host_db = "localhost";
4 $user_db = "root";
5 $pass_db = "";
6 $db_name = "basedatosmaster";
7 $tbl_name = "Usuarios";
8
9 $conexion = new mysqli($host_db, $user_db, $pass_db, $db_name);
10
11 if ($conexion->connect_error) {
12 die("La conexion falló: " . $conexion->connect_error);
13 }
14
15 $buscarUsuario = "SELECT * FROM $tbl_name
16 WHERE nombre_usuario = '$_POST[username]' ";
17
18 $result = $conexion->query($buscarUsuario);
19
20 $count = mysqli_num_rows($result);
21
22 if ($count == 1) {
23 echo "<br />". "El Nombre de Usuario ya a sido tomado." . "<br />";
24
25 echo "<a href='index.html'>Por favor escoga otro Nombre</a>";
26 }
27 else{
28
29 $form_pass = $_POST['password'];
30
31 $hash = password_hash($form_pass, PASSWORD_BCRYPT);
32
33 $query = "INSERT INTO Usuarios (nombre_usuario, password)
34 VALUES ('$_POST[username]', '$hash')";
35
36 if ($conexion->query($query) === TRUE) {
37
38 echo "<br />" . "<h2>" . "Usuario Creado Exitosamente!" . "</h2>";
39 echo "<h4>" . "Bienvenido: " . $_POST['username'] . "</h4>" . "\n\n";
40 echo "<h5>" . "Hacer Login: " . "<a href='login.html'>Login</a>" . "</h5>";
41 }
42
VELOZITYWEB
43 else { BLOG
44 echo "Error al crear el usuario." . $query . "<br>" . $conexion->error;
45 }
46 }
47 mysqli_close($conexion);
48 ?>
Si el usuario no existe, el programa continua con la consulta INSERT INTO para insertar el usuario y el password hash en la BD.
$hash almacena la función password_hash(); la cual utiliza como parámetros la variable $form_pass y el algoritmo de encriptacion CRYPT_BLOWFISH.
Luego, la variable $hash sera igual al hash proporcionado por la encriptacion y sera enviado a la BD con la consulta INSERT INTO.
Si todo sale bien, se mostrara un mensaje diciendo “Usuario creado exitosamente.” y un mensaje de bienvenida con el nombre del usuario.
Ahora que los usuarios se pueden registrar, es momento de que puedan hacer login y crear una sesión.
Previous: Next:
Modernas Plantillas Gratis para Bootstrap 4 Como Leer un Archivo JSON con Multiples Objetos y Arreglos con JS
21 Responses
Hernán.
November 19, 2018 at 2:18 pm
Muchas Gracias. Sería genial, espero no sea mucho pedir, que expliquen, más o menos, cómo llevar a cabo un sistema de
comentarios/respuestas.
De nuevo gracias.
Reply
Name*
November 12, 2018 at 8:41 pm
Hola. Hice todos los pasos y me da error 500. Como podria solucionarlo
Reply
Hierro59
October 8, 2018 at 4:43 pm
Excelente! Muchisimas gracias, estpy usando tu codigo. Ahora solo falta como hacer el login jejejeje sigo buscando
Reply
F e r n a n d o Ve r a
July 4, 2018 at 10:25 pm