【发布时间】:2019-01-02 11:58:30
【问题描述】:
我正在尝试在页面重新加载时重新启动过期的会话。这是一个最小的代码示例:
<?php
$timeout = 3;
ini_set('session.gc_maxlifetime', $timeout);
session_name('mytest');
session_start();
if (isset($_SESSION['LAST_ACTIVE']) && (time() - $_SESSION['LAST_ACTIVE'] > $timeout))
{
foreach ($_COOKIE as $k => $v)
setcookie($k, $v, time() - 3600, '/');
echo 'session cookie destroyed<br />';
session_destroy();
session_start();
}
$_SESSION['LAST_ACTIVE'] = time();
?>
<a href="<?=$_SERVER['PHP_SELF']?>">Reload</a>
这里发生的情况是,在 3 秒后点击重新加载链接会破坏会话(没有问题)。但是由于我在session_destroy(); 之后再次运行session_start(),我希望它再次创建一个新会话,但它没有发生。我必须单击“重新加载”两次才能重新开始会话。
有没有办法在单页加载时重新启动会话?
【问题讨论】:
标签: php session cookies session-variables session-cookies