PHP session_id() 空

Posted

技术标签:

【中文标题】PHP session_id() 空【英文标题】:PHP session_id( ) null 【发布时间】:2011-05-29 02:47:31 【问题描述】:

我在会话方面遇到了一些困难。

在我的本地 MAMP 测试服务器上,如果我这样做:

session_start(); echo session_id();

我得到了一个漂亮的会话 ID。

但是,如果我在我的网络服务器上做同样的事情,我能从 session_id 得到的只是'null'。测试 session_start( ) 的返回并使用 session 一切正常,但 session_id( ) $SID 和 $phpSESSID 都为空。

这是为了增加安全性而故意隐藏的吗?我希望能够允许 Flash 通过 PHP 调用对购物车进行更改,并使用浏览器反映购物车(存储在会话中)。

【问题讨论】:

如果你执行 session_start(); 会发生什么var_dump($_SESSION); 有效会话变量:array(1) ["product"]=> &array(1) [0]=> string(21) "frame-13-1-260-237-18 " 那么 session_id( ) 仍然报 null... 空?奇怪的是 session_id 应该只返回 id 或空字符串。 如果我 " echo 'Session is: ' . session_id( ); " 我得到 "Session is: null"。 如果我 var_dump( session_id( ) ) 我得到: string(4) "null"... 所以它实际上是一个 "null" 字符串。不为空 【参考方案1】:

我在 Windows 上遇到了类似的问题,对我来说,这是由 ini 设置 session.save_path 定义的路径无效引起的。

【讨论】:

【参考方案2】:

也许是一种极端情况,但对我来说,我通过测试 session_start() 的返回值来解决它,结果表明它是假的。

问题原来是实际文件的编码。在会话开始之前,它发出了一些不可见的东西,尽管看起来好像什么都没有。

我通过将相关文件复制到纯文本编辑器(我使用https://www.editpad.org/)、删除源文件、重新创建空文件、粘贴我通过编辑板运行的代码并重新上传来解决它。

之后,一切都开始正常填充。

【讨论】:

【参考方案3】:

我遇到了类似的问题(session_id() 返回了"",希望这与您的问题有关)。我关闭了所有相应的选项卡并删除了所有相关的 cookie,然后重新打开了站点,现在 session_id() 返回了一个漂亮的哈希值。

【讨论】:

【参考方案4】:

确保 session_start() 的返回值为 TRUE。

确保在脚本向浏览器输出任何内容之前调用 session_start()。

检查 apache 是否具有会话路径的写入权限。我的是/tmp

【讨论】:

session_start( ) 为真。文件的开头是 session_start(); ...我的是 /tmp 并且会话确实有效。 (购物车功能正常,...)并且该脚本适用于 MAMP。

以上是关于PHP session_id() 空的主要内容,如果未能解决你的问题,请参考以下文章

PHP 根据session_id获取session的内容

php中session_id()函数详细介绍,会话id生成过程及session id长度

linux下 php文件中session_id无法保持不变,每次刷新页面session_id也会出现新的数值 这个是怎么搞定的?

php session_id() session_name()

PHP 分布式集群中session共享问题以及session有效期的设置

PHP,同一窗口,不同页面,每个页的SESSION_ID都不同是怎么回事?