最近我注意到正在创建许多空白会话,我不确定为什么,但我相信我正在以正确的方式做所有事情。
目前我们创建一个会话,当用户logs in or 寄存器,然后我们检查用户是否使用isset($_COOKIE['auth'])
属于登录或注册期间创建的会话。
如果该 cookie 存在,那么我们将启动一个会话,这有助于我们避免为未注册用户启动数千个会话并创建大量会话文件。
会话设置:
php file
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
创建登录会话(登录成功后)
session_start();
session_regenerate_id(true);
$_SESSION['userId'] = $userId;
$_SESSION['created'] = time();
session_write_close();
header("Location: $_SERVER[HTTP_REFERER]");
检查是否应恢复会话
然后,我们根据是否为用户检查是否启动会话auth
会话 cookie 已设置。
仅当用户之前注册或登录时才会设置:
if(isset($_COOKIE['auth'])){
session_start();
session_write_close();
}
检查用户是否登录
要检查用户是否登录,我们使用一个函数:
function isAuthenticated(){
if (!isset($_SESSION['userId']))
return false;
else
return true;
}
Log Out
function logOut(){
session_start();
session_destroy();
setcookie('auth', "", 0);
unset($_SESSION);
unset($_COOKIE['auth']);
return true;
}
由于某种原因,我在会话文件夹中收到了大量空(文件大小为0)的会话文件。
这些来自哪里?
Does session_regenerate_id(true)
创建一个新的会话文件并将旧的会话文件留空?这是我能想到空会话文件的唯一原因吗?