我建立了一个用户管理系统,该系统可使用户保持登录状态一年
我已经能够使用下面的代码片段
if (PHP_VERSION >= 5.1) {
$expire = 365*24*3600; // We choose a one year duration
ini_set('session.gc_maxlifetime', $expire);
session_start(); //We start the session
// session_regenerate_id(true);
setcookie(session_name(),session_id(),time()+$expire);
//Set a session cookies to the one year duration
这可以按我的预期工作,但是我还想让用户选择注销,并将cookie设置为过期。
我被困住了,这不仅会使我的用户陷入困境,而且他们整整要登录一年,如果他们需要注销,那将是一个现状。
这就是我试图取消设置cookie并清除会话变量以便注销用户的方法。
if ( isset( $_COOKIE[session_name()] ) )
setcookie( session_name(), "", time()-31556952, "/" );
$_SESSION = array();
session_destroy();
setcookie('cookie1', '', strtotime('-1 year'));
setcookie('cookie2', '', strtotime('-1 year'));
我无法将Cookie设置为过期
请帮助我。
答案 0 :(得分:1)
用户注销后,您只需删除cookie并创建一个新的cookie,该cookie会在另一年后过期。
尝试使用此方法删除Cookie,然后可以使用您的代码创建一个新的Cookie:
$sessionName = session_name();
if (isset($_COOKIE[$sessionName])) {
setcookie($sessionName, "", time() - 3600);
}