对不起,我不能就已经回答的问题提出问题,因为我刚刚注册了。
我的问题是会话到期。
它工作正常,并在设定时间后退出。
我的问题是,当没有登录时,我重新访问该网站,然后重定向到已注销的页面。我很确定这对我的搜索引起了负面影响。
这是我用过的代码。
// ********************************* //
// ************ SESSIONS *********** //
// stops javascript from getting the session id. phpacademy
ini_set('session.cookie_httponly', true);
// Start the session:
session_start();
// http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
// last request was more than 60 minutes ago
session_destroy(); // destroy session data in storage
session_unset(); // unset $_SESSION variable for the runtime
header('Location: logged-out.php');
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
// http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes
if (!isset($_SESSION['CREATED'])) {
$_SESSION['CREATED'] = time();
} else if (time() - $_SESSION['CREATED'] > 1800) {
// session started more than 30 minutes ago
session_regenerate_id(true); // change session ID for the current session an invalidate old session ID
$_SESSION['CREATED'] = time(); // update creation time
}
// stops them using proxy servers and other ip addresses.
if (isset($_SESSION['last_ip']) === false);{
$_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR'];
}
if ($_SESSION['last_ip'] !== $_SERVER['REMOTE_ADDR']){
session_unset();
session_destroy();
}
// ************ SESSIONS *********** //
// ********************************* //
当我已经退出时,我该怎么做才能停止被重定向到退出???
我可以看到使用statcounter的其他人正在发生这种情况,他们的访问页面是已登出的页面吗?
请告知。
答案 0 :(得分:0)
正如关于会话的php文档中所指出的,除了简单地调用session_unset
和session_destroy
之外,还有更多工作要清理/销毁会话。要永久删除会话,您还必须销毁会话cookie。为此,请参阅here
顺便说一句,在session_unset
无效之后调用session_destroy
,session_unset
应该在调用session_destroy
之前调用,因为一旦你破坏了会话与当前相关的数据会话将不再可访问(尽管它仍然存储在您的服务器上,并且可以通过会话cookie再次访问)。