PHP会话id在页面之间或刷新页面时发生更改
问题是,每次刷新页面或将页面更改为另一个页面时,会话id都会更改,并在会话保存路径中创建新的会话文件。 以下是我的代码的初始部分:PHP会话id在页面之间或刷新页面时发生更改,php,session,Php,Session,问题是,每次刷新页面或将页面更改为另一个页面时,会话id都会更改,并在会话保存路径中创建新的会话文件。 以下是我的代码的初始部分: <?php session_start(); echo session_id(); ... ?> 显然,会话变量(这是我需要的)不起作用 奇怪的是,该页面在localhost上运行良好,但在服务器上尝试时却无法运行 提前感谢。在您的服务器上,在php.ini中检查TTL以获取cookies会话。cookie_lifetime
<?php
session_start();
echo session_id();
...
?>
显然,会话变量(这是我需要的)不起作用
奇怪的是,该页面在localhost上运行良好,但在服务器上尝试时却无法运行
提前感谢。在您的服务器上,在
php.ini
中检查TTL以获取cookies<代码>会话。cookie_lifetime定义cookie将持续多长时间(默认值为0,这意味着直到浏览器关闭)和会话。gc_maxlifetime
定义删除数据之前的多长时间,也以秒为单位
并确保会话文件未存储在
/tmp
文件夹中。看起来包含会话的目录不可写
这就是为什么php每次都会生成一个新的会话文件。
检查您的chmod for sessions文件夹。在服务器中检查此设置:
session.auto\u start
这将导致在每个页面中自动启动会话,无论您是否调用session\u start()
在会话开始之前,确保没有幻影
CRLFs
或类似的东西。在生产环境中,错误报告可以关闭,因此可能不会被捕获,但会话可能会发现难以写入。这有时会导致这种情况。在每页上都会调用Checksession\u start()
。从这里我们看不到。还可以使用{}
按钮设置代码样式。每个页面都会调用session_start()。(感谢{}的建议)我正在使用“is_writable(session_save_path())”来检查它。是的,它是可写的。session.cookie\u life
值为0,而session.gc\u maxlife
值为1440。此外,会话文件存储在我创建的非临时文件夹中。用于获取cookie参数,并查看域
、安全
和httponly
下的一切是否正常。我的index.php上有幻影CRLF。移除它们解决了mi问题。谢谢