PHP:$ _SESSION永远不会被设置,但$ _POST是?

时间:2011-04-11 06:31:12

标签: php session superglobals

[@ downvote和idiot的言论,打击人们并不酷。我甚至在问了这个问题之前,整整重新检查了文件和coursenotes 3天。 正如詹姆斯所做的那样,关闭这一点以防止白痴的合唱与无用的和事实上不正确的评论一起堆积。感谢Charles和Brent B的帮助。 事实证明这不是Safari问题所以我删除了那些标签。]


$ _ SESSION未在Safari中设置,因此我的多页形式中断。 $ _POST,$ _REQUEST确实设置(但后来的页面显然会消失)。 版本是PHP:5.3.1,Safari 5.

帮助!以下任何一个问题都,我检查了所有问题,并阅读了所有其他相关问题:

  • session_start()有效。 SID / PHPSESSID保留在各页之间。
  • session.use_cookies = 1,session.use_only_cookies = 1
  • 我检查了 php.ini 并认为它没问题
  • 我确实将Safari配置为接受所有Cookie(暂时)。没有区别。
  • 我可以手动设置 $ _ SESSION ['debug'] 在页面之间保留(并且会话文件被正确写出)。除非我这样做,否则 $ _ SESSION 永远不会被定义。

我没有时间调试这个废话,所以下面哪个最后解决方法最难看? (这是一个编程任务,而不是生产代码) 根据课程说明,$ _SESSION应该合并$ _POST,$ _REQUEST,$ _GET,session和globals吧?

  1. 手动执行 $ _ SESSION = array_merge($ _ SESSION,$ _ POST); [this works]
  2. 使用隐藏表单在后续表单上重新发布 $ _ POST
  3. 其他?
  4. (更广泛地说,如果在Safari(5)上简单地认为PHP被破坏了吗?)

1 个答案:

答案 0 :(得分:5)

$ _ SESSION不合并其他超级全局数组,它是它自己的数组。 $ _REQUEST是$ _POST和$ _GET的合并,但就是这样。根据您的描述,$ _SESSION正常运行。阅读官方手册。 http://www.php.net/manual/en/language.variables.superglobals.php