Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: welchu en 31 Julio 2018, 17:38 pm



Título: Tiempo de duración - login/logout en php y mysql?
Publicado por: welchu en 31 Julio 2018, 17:38 pm
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


Título: Re: Tiempo de duración - login/logout en php y mysql?
Publicado por: Shell Root en 31 Julio 2018, 17:59 pm
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.


Título: Re: Tiempo de duración - login/logout en php y mysql?
Publicado por: #!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


Título: Re: Tiempo de duración - login/logout en php y mysql?
Publicado por: Shell Root en 31 Julio 2018, 18:05 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?


Título: Re: Tiempo de duración - login/logout en php y mysql?
Publicado por: #!drvy en 31 Julio 2018, 18:09 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


Título: Re: Tiempo de duración - login/logout en php y mysql?
Publicado por: 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...


Título: Re: Tiempo de duración - login/logout en php y mysql?
Publicado por: srWhiteSkull en 3 Agosto 2018, 18:23 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