【问题标题】:PHP session_id( ) nullPHP session_id() 空
【发布时间】: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" 字符串。不为空

标签: php sessionid


【解决方案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。
        猜你喜欢
        • 2012-12-16
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 2015-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-06
        相关资源
        最近更新 更多