El día de hoy aprenderemos a crear un login con sesiones en PHP de la mano de Gabriel Chavez, autor invitado del blog, mediante un ejemplo práctico en código donde aprenderemos fácilmente a implementarlas. Además también veremos como implementar mecanismo antispam con Google reCaptcha, ¿listo? Te dejo con Gabriel!
El uso de las sesiones generadas por PHP se ha puesto muy de moda cuando trabajamos paginas dinámicas con este maravilloso lenguaje, si nos remontamos unos años atrás, se trabajaban con Cookies, lo que representaba un grave agujero de seguridad para el usuario ya que las Cookies se almacenan en la computadora y fácilmente se pueden modificar. Las sesiones de PHP solucionan este problema almacenando los datos en el servidor, disminuyendo la entrega de datos sensibles al usuario.
¿Qué lograremos en este artículo?
Montaremos un sistema de login/logout de usuarios, esto lo lograremos trabajando con sesiones en PHP y MySQL. Validaremos primeramente el formulario de forma nativa y posteriormente validaremos con Google reCAPTCHA para proceder al envio de datos en el lado del servidor, confirmaremos que el correo y la contrasena sean correctas en nuestra base de datos, en caso de que no existan mostraremos un error personalizado.
El sistema que haremos en este post es bastante sencillo y cualquier persona puede montarlo en cualquier servidor corriendo MySQL y PHP7, también tocaremos un poco de teoría para dejar en claro todos los conceptos relacionados con el tutorial.

¿Necesitas hosting wordpress? WebEmpresa te ofrece un servicio super rápido, excelente soporte en español y certificado SSL gratuito:
WebEmpresaDentro de nuestra carpeta del proyecto crearemos nuestro index.php, dentro de este archivo colocaremos las dependencias e iniciaremos la sesión del cliente para posteriormente asignarle un nombre.
Lo que acabamos de hacer es crear primeramente una sesión en el servidor, posteriormente hacemos includes de dos archivos, conexion.php
que tiene nuestra conexión a la base de datos y sesion.php
en donde controlaremos la sesión creada. Opcionalmente traemos datos de nuestra base de datos con una query con la extensión de PHP, mysqli.
Posteriormente crearemos nuestra carpeta includes en donde almacenaremos nuestros archivos del sistema.
conexion.php
No hace falta decir mucho sobre este archivo, lo que hacemos es establecer datos para que MySQLi pueda interpretarlos y procesarlos para hacer la conexión a nuestra base de datos. En la segunda linea comprobamos nuestra conexión, si todo está bien no nos aparecerá nada en pantalla.
sesion.php
En este archivo verificaremos la sesión del usuario asignándole un identificador, yo lo hice mediante el correo que está almacenado en la base de datos. En caso de que no se cree correctamente la sesión enviaremos los headers a un archivo llamado entrar.php
en donde el usuario tendrá que hacer el login para ingresar en cualquier pagina de nuestro sitio.
Esto es lo que hemos llevado hasta ahora:
Hemos creado nuestro index.php
en donde incluimos los archivos necesarios para conectarnos a la base de datos (conexion.php
) junto con nuestro archivo sesion.php
en donde tenemos nuestro código que verifica si la variable $_SESION
ha sido creada, posteriormente si es TRUE lo dirigimos a nuestro index.php
con los datos asignados, si es FALSE lo dirigimos a entrar.php
en donde el usuario tendrá que loggearse para entrar.
Base de datos
Para que nuestro sistema de login funcione necesitamos crear la base de datos, a causa de ahorrar tiempo y explicaciones te pegare la consulta que tienes que hacer a tu servidor, lo puedes hacer mediante phpmyadmin o directamente en tu consola.
Posterior a la consulta, checa que todo está bien entrando en tu base de datos, debería aparecer una tabla llamada usuarios.
Datos de acceso por default:
Correo: demo@gabrielchavez.me
Contraseña: demo
Ahora solo bastara crear nuestro archivo entrar.php
en nuestra carpeta de raíz del proyecto.
Como te mencione al principio, nuestro sistema estará protegido por Google reCAPTCHA, lo incluiremos en este archivo a causa de facilidad, pero tu puedes incluirlo en un archivo totalmente independiente.
Tenemos dos parametros que necesitamos editar y son data-sitekey=«SITEEEE KEYYYYY« y «SECRETTTT KEEEEEY» en donde colocaremos nuestros datos que nos ofrece la API de Google reCAPTCHA, recordemos registrar nuestro dominio en la API que creemos para que pueda funcionar correctamente.
Lo que hacemos con este archivo es crear toda la información que necesita nuestro sistema mediante un formulario, desde iniciar sesiones hasta enviar parámetros por POST a nuestro sistema.
En la linea 60 de nuestro código tenemos esta parte if (isset($_POST['login']))
encargada de verificar si la variable $_POST con el nombre «login» ha sido creada, en caso de que sea TRUE la respuesta, nuestro código se hará cargo de hacer una query a nuestra base de datos para verificar si los datos ingresados son correctos, en caso contrario tendremos un mensaje de error.
salir.php
Para poder terminar nuestro pequeño sistema tendremos que crear un ultimo archivo encargado de destruir la sesión creada solamente cuando un usuario acceda al archivo mediante un enlace que le dejamos en un botón. Esto se puede hacer solo con 3 lineas de código.
Manejar este sistema es totalmente fácil, cabe recalcar que es un sistema muy básico.
Si queremos agregar más páginas a nuestro sistema que requieran iniciar sesión solo tenemos que crear un archivo .php y colocar el siguiente código al inicio de nuestro archivo:
Con el código anterior nadie podrá ingresar en la pagina si no se ha loggeado correctamente en nuestra pagina entrar.php ya que utilizamos las sesiones que están almacenadas en nuestro servidor.
Trabajar con sesiones en PHP es mucho más seguro que las propias Cookies ya que si recordamos, este tipo de archivos se almacenan en la computadora del cliente lo cual representa una brecha de seguridad ya que pueden ser copiadas y modificadas. Las sesiones de PHP resuelven este problema agregando mayor seguridad almacenando todo en nuestro servidor.
Con esto terminamos nuestro pequeño sistema de usuarios, no sin antes darle agradecimiento a Jonathan por brindarme un espacio en su blog y a todos los informáticos que me están leyendo por brindarme unos minutos, un abrazo virtual a todos! 😀
Si tienes dudas sobre este sistema puedes darte una vuelta por mi pagina web Gabriel Chávez en donde frecuentemente comparto mis conocimientos con la comunidad, con gusto te guiare en lo que necesites.
Agradezco a Gabriel Chávez por su cooperación y disponibilidad para la construcción de este ejemplo de login con sesiones y redacción del post, lo mejor de mis deseos para él en sus futuros proyectos, en su sitio web tiene información bastante útil de programación web, les recomiendo pasarse a visitarlo.
Hasta luego!