Login y creacion de sesiones con PHP y MySQL

Conocimiento es poder!

Login y creacion de sesiones con PHP y MySQL

Actualizado: Marzo 02 2019

Debido a los miles de usuarios que visitan este post y a que algunos han tenido problemas implementando el código he realizado algunas mejoras a la explicación de como cree todo.

También le hice unas mejoras a la interfaz de usuario (UI) y ahora el usuario tiene la opción de recuperar el password via email.

Como el proyecto tiene varios archivos PHP y HTML es mas facil ponerlo todo en un sitio como Github en vez de poner todo el codigo fuente aqui en el post.

Ya no tienes que hacer referencia al post Formulario de Registro de Usuarios con PHP y MySQL , ahora todo esta en la carpeta PHP-login en GitHub.

La App fue creada con:

  • XAMPP con PHP 7.2.10 para Windows
  • MySQL
  • phpMyAdmin
  • Bootstrap

Como crear la base de datos y la tabla:

screenshoot de XAMPP Control Panel
  1. Abre XAMPP y “arranca” el Apache y el MySQL.
  2. Escribe localhost:8080 o 127.0.0.1:8080 en tu navegador.
  3. En el menu dale click a phpMyAdmin.
  4. Crea una base de datos con el nombre phplogin.
  5. Crea una tabla con el nombre users y 4 campos (Id, Name, Email, Password).
  6. Coloca el campo Id en AUTO_INCREMENT.
  7. El campo Password que tenga una longitud de valores de 60 o mas.
Tabla users en phpMyAdmin
screenshoot de phpMyAdmin

Descarga o clona la App en GitHub y colócala en tu carpeta htdocs en XAMPP

https://github.com/WilliamRiveraRamos/PHP-login

Abre el navegador y entra http://localhost:8080/PHP-login-master/

Entra un nombre, email y password y presiona Create my account, el password se convierte en un hash y es enviado a la base de datos junto con el nombre y el email.

PHP login index page
screenshoot de la pagina index.html

Confirma en la base de datos que Name, Email y Password se crearon y que el password se convirtió en un hash.

Luego has click en Login y entra el email y el password que acabas de crear.

screenshoot de la pagia login.html

Ahora cuando el usuario preciona el link “Lost your password?” se habre un pequeño form que le permite al usuario recuperar el password via email.

La Sesión

Si todo esta bien, sale un mensaje de bienvenida con el nombre del usuario y se crea una sesión por 1 minuto.

Tienes acceso por 1 minuto al archivo con acceso restringido edit-profile.php.

Después de 1 minuto la sesión termina y el usuario no podra permanecer o hacer cambios en la pagina edit-profile.php, necesitara hacer login nuevamente.

Si presionas Logout antes del minuto e intentas acceder la pagina edit-profile.php te saldrá un mensaje de error.

Para restringir el acceso a las paginas, coloca la función session_start(); exactamente al comienzo de cada pagina y coloca el código PHP del archivo edit-profile.php

Aqui les dejo un demo para vean que todo funciona bien

Si tienes problemas viendo el video, puedes descargarlo en el siguiente enlace (el archivo es de solo 8MB).

http://velozityweb.com/blog/wp-content/uploads/2019/03/php-login-demo.zip

Ahora analiza el código para comprender como funciona todo y puedas  editarlo a tu gusto.

Espero les sea útil. Gracias por leer, comentar y compartir que sean bendecidos!

Tags: , , , , ,

39 Responses

  1. Gerard says:

    Gracias, buen aporte, me ha servido muchisimo y una pregunta, como se puede implementar un registro, utilizando datos de fb, g+. etc?

  2. jaozp says:

    Hola, el usuario lo crea y lo guarda en la Db pero cuando inicio sesion aparece

    Parse error: syntax error, unexpected ‘<' in C:\xampp\htdocs\PHP-login-master\check-login.php on line 60

    que es cuando se llama al archivo

  3. Pascual says:

    Hola Velozity. En primer lugar muy buen aporte. En segundo lugar, tengo un problema al usar tu código en mi web y es que resulta que cuando expira la sesión y voy al login, al acceder me gustaría ir de nuevo a la página en cuestión y no al check-login.php. Lo he intentado con javascript, con $_SESSION, con header(“location:…”); y con $_SERVER[‘HTTP_REFERENT’] (el cual siempre me lleva al mismo enlace login.html). ¿Cómo podría volver a la página en la que estoy cuando expira la sesión y tengo que loguearme sin que luego tenga que introducir en el navegador la ruta absoluta para volver a dicha página? Muchas gracias.

  4. Emmanuelluu says:

    En esta parte:

    if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true)

    no es necesario validar (==) si es true, ya que la variable se declaro como tal, y el bloque if, valida cuando es verdadero, saludos.

    • velozity says:

      Gracias por sus comentarios, tienes razon, no es necesario validar. Ese pedezo de codigo no es necesario. Gracias por aclarar el error.

  5. rafael says:

    el problema es que dezconosco donde va el password de la base de dato realice los cambio que tiene en otra respuesta y me sigue diciendo contraseña y usuario incorrecto

  6. rafael says:

    tengo un problema en la linea 27 hice los cambios pero me dice su nombre y contraseña son incorrectos

  7. mrojas6996 says:

    He seguido su código de forma exitosa, y de verdad que me ha sido sumamente útil, modifiqué solo algunas lineas pertenecientes a la ubicación de los archivos, pero el resto me servirá para todo lo relacionado a este lindo mundo informático, le agradezco infinitamente por estos códigos tan útiles.

  8. Hola, todo sale bastante bien (el usuario se crea, el nombre de usuario aparece en la tabla mysql y el password queda en hash), pero al ingresar el usuario y la contraseña me aparece “Username o Password estan incorrectos”… a pesar de que lo he intentado de distintas maneras no puedo dar con la solución.

  9. Hola, buenas noches.
    Me fue de mucha ayuda.
    Muchas Gracias.

  10. Sergio says:

    muchas gracias, buscaba esta información ya que mis anteriores scripts ya no funcionan en php 7.2

    saludos

  11. jose says:

    Buenisimo trabajo para el mundo gracias

  12. EXCELENTE LO FELICITO POR TAN BUEN TRABAJO. SALUDOS

  13. Juan David says:

    al aplicar el código redactado por usted y aplicarlo a mi proyecto me aparece un error en la linea 27 de checklogin.php haciendo una condición de comparación “if ($result->num_rows === 1)”, por favor resuelva me la duda

    • velozity says:

      Hola gracias por tus comentarios. Tienes razón hay un error del cual no me había percatado.

      • En la linea 27 cambia num_rows === 1 por num_rows > 0
      • Añade debajo de: $row = $result->fetch_array(MYSQLI_ASSOC); una llave de cierre (})
      • Y elimina la llave de cierre (}) que esta antes de: mysqli_close($conexion);

      Se supone que ahora te debe funcionar. Gracias!

      Te debe quedar algo asi…

      Screen Shoot Codigo Login Creacion de sesiones con PHP MySQL

  14. Mil gracias el mejor tutorial que encontré para hacer esto, Dios te bendiga!

    • velozity says:

      Muchas Gracias a ti! No sabes la alegría que me da saber eso. 🙂

      • Marcela says:

        Hola, todo sale bien (el usuario queda en la tabla mysql y el password queda en hash), pero al ingresar el usuario y la contraseña me aparece “Username o Password estan incorrectos”. No he podido hacer nada. Gracias

  15. Karina says:

    Gracias por tu aporte !!

  16. jose says:

    Con que BD lo estas manejando seria muy bueno que pusieras la creación de ella, Saludos y gracias de antemano

    • velozity says:

      Hola y gracias por tus comentarios. Para no hacer el post muy complicado y largo la base de datos la cree previamente con PHPMyAdmin. No la hice con un script de PHP.

  17. Haled says:

    Gracias por el aporte

  18. gabriel says:

    es la explicacion mas clara que he encontrado… gracias!!!!!!!!!!

  19. Fredd says:

    Nice!!! Gracias por el aporte…

  20. neo says:

    Será “su sesión Ha terminado’.

  21. Diego says:

    Gracias, eso fue una gran ayuda, se te agradece amigo.

  22. Hola gracias por tomarte el tiempo de explicar estos pasos, mira segui tus consejo todo bien al momento pero quiero saber sobre el archivo “checklogin.php” como puede ubicar que en vez de que me imprima el usuario logueado me redirija a una pagina nueva en donde puede mostrar estos datos de session

  23. Julio says:

    buenisimo…gacias por compartirlo…

  24. oyes despues qu la paginas ya estan bloqueadas. como le hago para desbloquearlas…. utilize tu codigo de restriccion de paginas . como le hago para despues de loguearme poder verlas

Deja tus comentarios o preguntas!

This site uses Akismet to reduce spam. Learn how your comment data is processed.