Je cherche un moyen de vérifier la vie d'une session php, et de retourner le nombre de secondes qu'une session a été "vivante".PHP: retourner la vie de la session en cours
Y a-t-il une fonction php qui me manque?
Je cherche un moyen de vérifier la vie d'une session php, et de retourner le nombre de secondes qu'une session a été "vivante".PHP: retourner la vie de la session en cours
Y a-t-il une fonction php qui me manque?
Je pense qu'il y a deux options ni l'un ni l'autre sont excellentes mais elles sont ici.
1) Si vous avez accès au système de fichiers, vous pouvez vérifier l'horodatage de création sur le fichier de session.
2) Mémoriser l'heure de création dans la session, par ex.
session_start();
if(! isset($_SESSION['generated'])) {
$_SESSION['generated'] = time();
}
Vous pouvez simplement stocker l'horodatage sur lequel la session a été créée lors de la session
Vous pouvez enregistrer le moment où la session a été initialisé et retourner cette valeur:
session_start();
if (!isset($_SESSION['CREATED'])) {
$_SESSION['CREATED'] = time();
}
Et pour récupérer ce informations d'une session arbitraire:
function getSessionLifetime($sid)
{
$oldSid = session_id();
if ($oldSid) {
session_write_close();
}
session_id($sid);
session_start();
if (!isset($_SESSION['CREATED'])) {
return false;
}
$created = $_SESSION['CREATED'];
session_write_close();
if ($oldSid) {
session_id($oldSid);
session_start();
}
return time() - $created;
}
Votre code me sent, parce que vous ne retournez pas la durée de vie de la session! Vous venez de retourner l'heure à laquelle il a été créé, mais le nom de la méthode est getSessionLifetime(). Votre méthode doit s'appeler getSessionStartTime() à la place ou modifier la méthode pour calculer le temps écoulé réel. – RibaldEddie
Vous avez raison, merci. – Gumbo
Aussi, ne vous embêtez pas à retourner faux. SI vous allez calculer la durée de vie de la session, renvoyez zéro, car la session a été active pour des unités de temps zéro. SI vous voulez que la session commence et que la session soit nouvelle, alors vous voudrez retourner time(). – RibaldEddie
Votre exemple remplacerait la valeur de chaque requête. – Gumbo
Vous avez raison, je ne faisais que démontrer l'idée et non l'implémentation. –