首次访问时未将PHP会话保存在浏览器中

首次访问时未将PHP会话保存在浏览器中,php,session,smarty,session-cookies,Php,Session,Smarty,Session Cookies,[更新代码] 我有一个奇怪的会话问题,似乎只有在有人第一次访问页面时才会出现 如果转到下一页并单击“下一步”,您可能会发现您被发送到一个未找到的页面。如果您随后返回链接并再次按“下一步”,则此功能将正常工作 奇怪的是,如果你清除cookie和所有其他浏览器相关的历史记录,问题似乎不会再次发生。如果您尝试使用其他浏览器,也不会出现这种情况 我已经查看了Chrome上的Resources选项卡,可以看到会话最初并没有保存,但正在进行第二次尝试 这是代码的相关部分。因此,在脚本的开头: // set

[更新代码]

我有一个奇怪的会话问题,似乎只有在有人第一次访问页面时才会出现

如果转到下一页并单击“下一步”,您可能会发现您被发送到一个未找到的页面。如果您随后返回链接并再次按“下一步”,则此功能将正常工作

奇怪的是,如果你清除cookie和所有其他浏览器相关的历史记录,问题似乎不会再次发生。如果您尝试使用其他浏览器,也不会出现这种情况

我已经查看了Chrome上的Resources选项卡,可以看到会话最初并没有保存,但正在进行第二次尝试

这是代码的相关部分。因此,在脚本的开头:

// set the http headers
header("Content-Type: text/html;charset=utf-8");
header("X-XSS-Protection: 1; mode=block");
header("Strict-Transport-Security: max-age=31536000; includeSubDomains");
header("X-Content-Type-Options: nosniff");
header("X-Permitted-Cross-Domain-Policies: master-only");

session_set_cookie_params ( $lifetime = 0, $path = "/", $domain= "pulse.gd", $secure = TRUE, $httponly = true );

// set-up the session handler
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
register_shutdown_function("sess_shutdown");
然后在正在调用的函数的顶部:

session_start();
然后,当它构建了要传递到下一步的数组时

// store the step array in the session object
$_SESSION['stepArray'] = serialize($stepArray);
此时它(应该)显示下一页。这是由Smarty处理的

有人有什么建议吗


感谢您重新编写代码:

我很确定你不需要一半的头,而且大多数会话设置都是无效的语法

// set the http headers
header("Content-Type: text/html;charset=utf-8");
//header("X-XSS-Protection: 1; mode=block");
//header("Strict-Transport-Security: max-age=31536000; includeSubDomains");
header("X-Content-Type-Options: nosniff");
//header("X-Permitted-Cross-Domain-Policies: master-only");

session_set_cookie_params( 0, "/", "pulse.gd", TRUE, true );

/*** What is the intended purpose of these below functions? **/
// I'm pretty sure you don't need to set these. 
// UNLESS they've been set in place by Smarty, in which case leave them.
// set-up the session handler
// session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
// register_shutdown_function("sess_shutdown");
错误很可能在您的
sess\u open
函数中,我真的怀疑您是否真的需要它

  • 我还想说,如果你的页面有5k行代码,那你就错了
  • 不要将
    session\u start
    放在函数的顶部,它需要放在发送到浏览器的页面的顶部
  • 并进行了研究和实现
  • 回复:
    session\u set\u save\u handler
    plase请检查此对话框:

去年某个时候,我在Google Chrome上遇到了类似的问题,但我不记得我是如何解决的,请你在问题中发布你的sesson设置代码和锚定链接,而不是作为链接,干杯。嗨@Martin,我已经用我认为相关的代码更新了问题,不想发布所有5000行!我不确定你所说的“锚定链接”是什么意思。虽然.HTML锚定链接,
你提到的链接不起作用。我的答案已更新。几点。我没有说5k行代码在一个文件中。。。我有PHP错误日志记录,这没有帮助。首先调用会话启动。您注释掉的行肯定是需要的,因为它们实现了将会话存储在数据库中而不是服务器上。我可以看到在数据库中创建的会话,但似乎正在生成一个新的PHPID,我可能应该在一开始就说明这一点。我会看着标题想,谢谢!