PHP: acceso al sistema entre hora inicial y final

En el post de hoy veremos cómo podemos hacer un sistema en PHP para hacer que los usuarios entren solo en determinada hora específica, por ejemplo, desde las 10 de la mañana hasta las 2 de la tarde.

Básicamente vamos a ver cómo guardar la hora de entrada y salida, y dejar que el usuario ingrese solo si está en ese rango.

Te voy a mostrar un ejemplo de cómo guardar los datos en la base de datos y cómo comparar al momento de iniciar sesión. Te aviso desde ahora que el código será como un ejemplo para que tú puedas tomarlo y adaptarlo al tuyo.

Diseñando la base de datos

Como vamos a comparar únicamente la hora necesitamos guardar a la misma con los dos puntos que separan la hora y los minutos.

Para ello necesitamos un campo de texto que soporte al menos 5 caracteres. En mi caso usaré varchar de 5.

Por cierto, en la tabla de los horarios también necesitamos tener el id del usuario para el cual estamos definiendo el horario y agregar las relaciones necesarias:

Registrar horario

Ahora veamos cómo vamos a guardar los horarios de entrada y salida para nuestro sistema. Aquí vamos a necesitar el id del usuario (que debe venir de la base de datos) y la hora de entrada y salida.

Yo he creado un arreglo con usuarios ficticios para el ejemplo. Las cosas que hay que resaltar son los input, que son de tipo time y que funcionan en Chrome y Firefox.

Estos input nos darán la hora en formato de 24 horas, por ejemplo, 23:44. Y así como estén, los vamos a guardar en nuestra base de datos para consultarlos más adelante.

Guardando entrada y salida

De nuevo te muestro un ejemplo de cómo se van a guardar los datos después de recibirlos del formulario:

Simplemente guardamos el id del usuario, la entrada y la salida. Por cierto, recuerda que solo debería existir un horario por cada usuario, así que antes de guardar deberías ver si no existe otro horario, o deberías eliminar antes de guardar.

Comprobando hora

Cuando el usuario inicie sesión en nuestro sistema vamos a obtener su ID, y esto ya depende de ti. Por ejemplo, puede que obtengas el id a través de su correo o de los datos que ingrese para hacer login.

Una vez que tengas el id vas a consultar su horario de entrada y salida, y luego calcular la hora actual. En PHP podemos obtener la hora en formato de 24 horas con date("H:i"):

La magia sucede en la línea 19.

Cuando ya tenemos la hora actual y la entrada y salida del empleado (o los detalles de su turno) simplemente comparamos las cadenas de manera lexicográfica, es decir, las comparamos como si fueran números, pero ordenadas alfabéticamente.

Explicación en vídeo

Conclusión

Ya lo único que faltaría es poner una expiración a la sesión para expulsar al usuario a esa hora, pero eso queda en ti.

Por cierto, yo utilicé MySQL y PDO para los ejemplos pero esto puede adaptarse para cualquier otro motor, pues solo utilizo datos de tipo texto.

Te dejo más tutoriales de PHP por aquí.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

4 comentarios en “PHP: acceso al sistema entre hora inicial y final”

Dejar un comentario