为什么$\u POST变量在PHP中无法保存到$\u会话?

为什么$\u POST变量在PHP中无法保存到$\u会话?,php,forms,session,post,session-state,Php,Forms,Session,Post,Session State,我在将通过$\u POST提交的表单值保存为会话变量时遇到了一个非常奇怪的问题 好的,我在第一页有一个表格,它提交到第二页 在第2页,我将所有Post变量设置为会话变量 在第3页,我正在检索这些变量 在第2页,如果我写下如下内容: $_SESSION['fname'] = 'john'; 它很好用。我可以在第3页上找到它 如果我写了这样的东西 $_SESSION['fname'] = $_POST['fname']; 该会话变量在第3页上为空 更奇怪的是,如果我这样做: $_SESSION[

我在将通过$\u POST提交的表单值保存为会话变量时遇到了一个非常奇怪的问题

好的,我在第一页有一个表格,它提交到第二页

在第2页,我将所有Post变量设置为会话变量

在第3页,我正在检索这些变量

在第2页,如果我写下如下内容:

$_SESSION['fname'] = 'john';
它很好用。我可以在第3页上找到它

如果我写了这样的东西

$_SESSION['fname'] = $_POST['fname'];
该会话变量在第3页上为空

更奇怪的是,如果我这样做:

$_SESSION['fname'] = $_POST['fname'].' Doe';
在第三页,我只看到了Doe

先前由其他页面设置的会话变量在第3页也可以

我已经验证了post变量是在第2页设置的,现在我不知所措。我不是PHP会话专家,但我以前与他们合作过,从未见过类似的情况

有人有什么想法吗


编辑:正在会话中设置变量,第3页为空。

这意味着文章中的某些内容(
$\u post['name']
)未设置


尝试
var\u转储($\u POST)也可以查看实际发布的内容

我认为问题在于写入会话数据时,POST数据不可用


您可能可以通过打开php.ini并确保在会话之前注册POST来修复它,这样,当您尝试编写会话数据时,POST是可用的

我忍不住要问:您是否检查了第1页表单上的
method=“POST”
而不是
GET

我会大胆猜测您“验证”了POST变量不正确,并且它们拼写错误或类似的东西。此外,我刚刚验证了session.save\u path、session.cookie\u path、session.name、,和session_id()在所有3个页面上都是相同的,所以我看不到任何疯狂的多会话问题。
array(1){[“fname”]=>string(3)“Dan”}
@Dan有你的答案。切换到
$\u POST['fname']
,你应该表现得很好,然后为你的问题选择最佳答案。如果你这样做的话,更多的人会更喜欢Eley tp phelp你在未来的问题上:-)对不起Neal,我在我的第一篇文章中概括了。我有大约60个变量,name只是一个例子。在设置会话变量时,我对该特定变量使用fname。很抱歉,我应该在我的原始问题中使用实际的代码。@Dan是的,是的,你应该使用实际的代码,否则人们会调试一些可能毫无帮助的东西。^ ^ ^在你的脚本获得控制权之前,超级全局变量已经填充。脚本结束或调用
session\u write\u close()。你不必“注册”帖子。它总是在那里,如果脚本是通过POST调用调用的,那么它将包含POST的键/值对。