Evitar inicios de sesión duplicados en php

Evitar inicios de sesión duplicados en php

Muchas veces no debemos permitir inicios de sesión duplicados cuando trabajamos con php, es decir, que desde 2 navegadores distintos se abra la misma cuenta en nuestra aplicación.

La verdad que podemos llevar a cabo esta tarea de distintas formas y posiblemente todas sea válidas.

En esta entrada vamos a ver cómo podemos evitar inicios de sesión duplicados en php aplicando una sencilla lógica en nuestra base de datos.

Lo primero que vamos a hacer es crear una tabla de usuarios muy sencilla.

Lo único que tenemos de “especial” en esta tabla es la columna sess_id, así que vamos a guardar el session_id del usuario en base de datos, de esta forma sabremos si el usuario en cuestión puede o no acceder a la aplicación.

Cómo ya sabemos, la función de php session_id() nos devuelve el identificador del usuario actual, siempre que estemos utilizando $_SESSION de php, así que nos vamos a aprovechar de esto.

Lo primero que debemos hacer es crear un poco de html para simular nuestro proceso, así que crea un archivo .php con el siguiente código.

Muy sencillo, si el usuario ha iniciado sesión mostramos un par de enlaces, en otro caso el formulario para que inicie sesión, vamos a iniciar sesión.

En el script anterior todo es un proceso normal (y bastante desatendido) de login, pero lo más importante viene aquí.

Aquí es donde obtenemos el id de sesión del usuario actual y actualizamos ese campo cada vez que un usuario hace login, de esta forma podremos comprobar si el usuario que intenta acceder a nuestra aplicación es el correcto.

Una vez hemos iniciado sesión en la aplicación, podemos acceder a los recursos de la misma, para este ejemplo podrían ser productos, así que vamos a simular la lógica al pulsar el enlace Obtener productos.

Evitar inicios de sesión duplicados en php

Pues bien, para este propósito lo único que debemos hacer es comprobar en cada petición si un usuario ha iniciado sesión y también si la sesión que tiene en sesión valga la redundancia es la que tenemos en base de datos.

Con eso es suficiente, si la sesión que tiene el usuario es la misma que tenemos en base de datos el usuario podrá navegar, en otro caso significa que se ha accedido de forma paralela a la misma cuenta y la primera sesión será machacada, por lo tanto, el usuario A cuando intente acceder a algún recurso que requiera inicio de sesión verá que su sesión ha sido cerrada.

Ahora ya tenemos nuestra aplicación protegida contra inicios de sesión duplicados.

Añade un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies
Curso Avanzado de Datatables
¿Quieres más información?