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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage