0

[@downvote 和白痴言论,殴打别人并不酷。在提出问题之前,我花了整整 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、会话和全局变量对吗?

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

(更广泛地说,是否应该简单地认为 PHP 在 Safari (5) 上被破坏了?)

4

1 回答 1

5

$_SESSION 不会合并其他超级全局数组,它是它自己的数组。$_REQUEST 是 $_POST 和 $_GET 的合并,但仅此而已。根据您的描述, $_SESSION 工作正常。阅读官方手册。 http://www.php.net/manual/en/language.variables.superglobals.php

于 2011-04-11T07:31:15.187 回答