Tiempo de duración - login/logout en php y mysql?

Iniciado por welchu, 31 Julio 2018, 17:38 PM

0 Miembros y 1 Visitante están viendo este tema.

welchu

Hola!

Mi duda es que me gustaría almacenar el inicio de sesión, el cierre de sesión y el tiempo de duración en la base de datos desde php. El nombre de mi base de datos es 'registration' y mi nombre de tabla es 'users'.

Este es el código fuente que estoy utilizando:

https://codewithawa.com/posts/complete-user-registration-system-using-php-and-mysql-database

El código ya guarda el nombre de usuario en la base de datos cada vez que se registra un nuevo usuario, pero lo que me falta es saber el tiempo que está ese usuario conectado. Desde que hace login hasta logout.
Ya tengo creada una nueva columna en mi Base de datos con nombre 'logintime' y tipo de dato 'DATETIME'

Me podeís ayudar?

He estado probando como se hace pero me salen muchos errores con este código...
voy bien encaminado?

session_start();
$_SESSION['username']=$name;
date_default_timezone_set('europe/spain')
$date=date("h:i:sa");
$time=date("d-m-Y", time());
$sql = "INSERT INTO users(id, username, email, password, logintime) VALUES( , , , ,'$time')";


Y en vez de MD5 he pensado que es mejor poner: $password = bcrypt($password);

Gracias   :D

Shell Root

Al momento de registrarse que guarde el datetime, y cuando haga logout otro datetime  :huh:

Ha tener en cuenta es que a veces el usuario ni cierra sesión, ya que digamos cierra la pestaña del navegador.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

#!drvy

Guarda el datatime de cuando se identifica, y después, cada vez que haga una acción (navega a una pagina por ejemplo), guarda otro. Al segundo le restas el primero +- 5 minutos y tienes el tiempo total de conexión.

Saludos

Shell Root

Cita de: #!drvy en 31 Julio 2018, 18:03 PM
Guarda el datatime de cuando se identifica, y después, cada vez que haga una acción (navega a una pagina por ejemplo), guarda otro. Al segundo le restas el primero +- 5 minutos y tienes el tiempo total de conexión.

Saludos

:o hablando de eso, la cantidad de interacciones con la db produce algún problema? Digamos 1000 usuarios haciendo acciones diferentes al mismo tiempo?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

#!drvy

#4
Cita de: Shell Root en 31 Julio 2018, 18:05 PM
:o hablando de eso, la cantidad de interacciones con la db produce algún problema? Digamos 1000 usuarios haciendo acciones diferentes al mismo tiempo?

Bueno, eso depende mucho de muchos factores. SMF es lo que hace y al foro tampoco le va muy mal xD

PD: Por supuesto, si le preocupa, siempre puede limitar y por ejemplo solo escribir cada 5 minutos y usar sessiones para el resto.


Saludos

welchu

#5
He estado probando como se hace pero me salen muchos errores con este código...
voy bien encaminado?

session_start();
$_SESSION['username']=$name;
date_default_timezone_set('europe/spain')
$date=date("h:i:sa");
$time=date("d-m-Y", time());
$sql = "INSERT INTO users(id, username, email, password, logintime) VALUES( , , , ,'$time')";


Y en vez de MD5 he pensado que es mejor poner: $password = bcrypt($password);

Es verdad lo que dices Shell Root también debería aparecer logout cuando cierra la ventana o pestaña...

srWhiteSkull

Cita de: welchu en 31 Julio 2018, 18:50 PM
He estado probando como se hace pero me salen muchos errores con este código...
voy bien encaminado?

session_start();
$_SESSION['username']=$name;
date_default_timezone_set('europe/spain')
$date=date("h:i:sa");
$time=date("d-m-Y", time());
$sql = "INSERT INTO users(id, username, email, password, logintime) VALUES( , , , ,'$time')";


Y en vez de MD5 he pensado que es mejor poner: $password = bcrypt($password);

Es verdad lo que dices Shell Root también debería aparecer logout cuando cierra la ventana o pestaña...

Indica los errores