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

smc*_*mci 0 php session superglobals

[@ downvote和白痴言论,打败人们并不酷.我甚至在问了这个问题之前,整整重新检查了文件和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 ["调试"] ,并且得到跨页保存(和会话文件被正确地写出来).除非我这样做,否则$ _SESSION永远不会被定义.

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

  1. 手动执行$ _SESSION = array_merge($ _ SESSION,$ _ POST); [这个作品]
  2. 使用隐藏表单在后续表单上重新发布$ _POST
  3. 其他?

(更广泛的说明,如果在Safari(5)上简单地认为PHP被破坏了吗?)

Bre*_*ley 5

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

  • @smci,你提到的"EGPCS"是史前PHP的一件神器.曾经有一个名为`register_globals`的东西,它导致请求变量成为全局范围内的*实际变量*,而不是生活在数组中.该首字母缩写词代表了这些变量定义(或重新定义)的默认顺序.如果您提供的任何文档仍然引用该术语,我高度*高度*建议丢弃它并询问是谁给了您,为什么他们在新课程中依赖**历史的,不正确的信息**.(续) (2认同)