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()函数详细介绍,会话id生成过程及session id长度
linux下 php文件中session_id无法保持不变,每次刷新页面session_id也会出现新的数值 这个是怎么搞定的?
php session_id() session_name()