PHP leere Sitzungsdateien vom Anmeldesystem generiert
Kürzlich ist mir aufgefallen, dass viele leere Sitzungen erstellt werden. Ich bin mir jedoch nicht sicher, warum, da ich glaube, dass ich alles richtig mache.
Im Moment erstellen wir eine Sitzung, wenn ein Benutzer entwederloggt sich ein oderregistriertprüfen wir dann, ob ein Benutzer mit einem eingeloggt istisset($_COOKIE['auth'])
Dies gehört zu der Sitzung, die beim Anmelden oder Registrieren erstellt wurde.
Wenn dieses Cookie vorhanden ist, starten wir eine Sitzung. Auf diese Weise vermeiden wir, dass Tausende von Sitzungen für nicht registrierte Benutzer gestartet werden und eine große Menge von Sitzungsdateien erstellt werden.
Sitzungseinstellungen:
PHP-Datei
session_save_path("/home/user/sessions");
session_set_cookie_params("86400", "/");
session_name("auth");
php.ini
session.gc_maxlifetime = 90000
session.cookie_lifetime = 90000
session.use_trans_sid = 0
session.use_only_cookies = 1
Anmeldesitzung erstellen (Bei erfolgreicher Anmeldung)
session_start();
session_regenerate_id(true);
$_SESSION['userId'] = $userId;
$_SESSION['created'] = time();
session_write_close();
header("Location: $_SERVER[HTTP_REFERER]");
Prüfen, ob eine Sitzung fortgesetzt werden soll
Wir prüfen dann, ob eine Sitzung für einen Benutzer gestartet werden soll oder nichtauth
Sitzungscookie ist gesetzt.
Es wird nur gesetzt, wenn der Benutzer sich vorher registriert oder eingeloggt hat:
if(isset($_COOKIE['auth'])){
session_start();
session_write_close();
}
Überprüfen Sie, ob der Benutzer angemeldet ist
Um zu überprüfen, ob ein Benutzer angemeldet ist, verwenden wir eine Funktion:
function isAuthenticated(){
if (!isset($_SESSION['userId']))
return false;
else
return true;
}
Ausloggen
function logOut(){
session_start();
session_destroy();
setcookie('auth', "", 0);
unset($_SESSION);
unset($_COOKIE['auth']);
return true;
}
Aus irgendeinem Grund werden im Sitzungsordner viele leere Sitzungsdateien (Dateigröße 0) angezeigt.
Woher kommen diese?
Tutsession_regenerate_id(true)
Eine neue Sitzungsdatei erstellen und die alte Sitzungsdatei leer lassen? Ist das der einzige Grund, warum ich an leere Sitzungsdateien denken kann?