Pliki pustych sesji PHP generowane przez system logowania
Ostatnio zauważyłem, że tworzonych jest wiele pustych sesji, nie jestem pewien, dlaczego, ponieważ uważam, że robię wszystko we właściwy sposób.
W tej chwili tworzymy sesję, gdy użytkownik równieżloguje się lubrejestry, następnie sprawdzamy, czy użytkownik jest zalogowany za pomocąisset($_COOKIE['auth'])
należy do sesji utworzonej podczas logowania lub rejestracji.
Jeśli ten plik cookie jest obecny, rozpoczynamy sesję, co pomaga nam uniknąć uruchamiania tysięcy sesji dla niezarejestrowanych użytkowników i tworzenia ogromnej liczby plików sesji.
Ustawienia sesji:
plik php
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
Utwórz sesję logowania (Po pomyślnym zalogowaniu)
session_start();
session_regenerate_id(true);
$_SESSION['userId'] = $userId;
$_SESSION['created'] = time();
session_write_close();
header("Location: $_SERVER[HTTP_REFERER]");
Sprawdzanie, czy sesja powinna zostać wznowiona
Następnie sprawdzamy, czy rozpocząć sesję dla użytkownika, czy nieauth
ustawiany jest plik cookie sesji.
Zostanie on ustawiony tylko, jeśli użytkownik wcześniej się zarejestrował lub zalogował:
if(isset($_COOKIE['auth'])){
session_start();
session_write_close();
}
Sprawdź, czy użytkownik jest zalogowany
Aby sprawdzić, czy użytkownik jest zalogowany, korzystamy z funkcji:
function isAuthenticated(){
if (!isset($_SESSION['userId']))
return false;
else
return true;
}
Wyloguj
function logOut(){
session_start();
session_destroy();
setcookie('auth', "", 0);
unset($_SESSION);
unset($_COOKIE['auth']);
return true;
}
Z jakiegoś powodu dostaję wiele pustych (rozmiar plików 0) plików sesji w folderze sesji.
Skąd one pochodzą?
Robisession_regenerate_id(true)
utworzyć nowy plik sesji i pozostawić stary plik sesji pusty? To jedyny powód, dla którego mogę myśleć o pustych plikach sesji?