我无法强制会话在 PHP 中重新启动。这是问题所在:
我可以使用 获取我的会话 ID session_id()
,将其复制并添加到脚本的最顶部:
session_id('the_session_id');
session_start();
当我打开一个新浏览器时,来自另一个浏览器的会话不会被延续。我可以检查哪些设置?
原因:
如果您关闭浏览器窗口并再次打开它,那么此时将使用不同的 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);