我无法强制会话在PHP中重启。这是问题所在:
我可以使用session_id()
获取会话ID,复制它,并添加到我的脚本的顶部:
session_id('the_session_id');
session_start();
当我打开一个新浏览器时,来自其他浏览器的会话不会被转移。我可以检查哪些设置?
答案 0 :(得分:0)
<强>原因:强>
如果您关闭浏览器窗口并再次打开它,那么此时将使用不同的ID启动第二个会话,如果使用的Web应用程序具有某个基于会话的身份验证系统,则用户必须再次登录。同时用户必须注销两次!
<强>解决方案:强>
此功能将使用真实cookie作为会话ID,并在每次脚本执行时更新到期时间。到期时间等于PHP指令“gc_maxlifetime”(默认值)或每个自定义值。所以,将此函数放在PHP文件中。我们需要它。
<?php
// $expire = the time in seconds until a session have to expire
function start_session($expire = 0)
{
if ($expire == 0)
$expire = ini_get("session.gc_maxlifetime");
else
ini_set("session.gc_maxlifetime", $expire);
if (empty($_COOKIE['PHPSESSID']))
{
session_set_cookie_params($expire);
session_start();
}
else
{
session_start();
setcookie("PHPSESSID", session_id(), time() + $expire);
}
}
?>
现在,在您发布session_id('the_session_id');
和session_start();
的页面顶部,删除这些行并使用以下代码开始会话:
使用php配置
给出的过期时间开始会话start_session();
开始一个将在1小时后过期的会话:
start_session(3600);