访问$ _POST变量导致错误
我想知道你是否可以帮助我以下几点:
我将一些填入表单的信息传递到下一页来显示。我正在使用$_POST
方法。虽然检查代码时显示在浏览器中的信息显示为注意:未定义索引错误,并且没有传递值的痕迹(代码中应该是)。我认为这与上面的错误有关。
我呼吁它的方式是对前:
$name = $_POST['name'];
此外,我想获得一些隐藏字段相同的信息,以便它们存储在数据库中,但在这里(在浏览网页后)也没有价值传递。隐藏的值是空的。
对不起,如果这似乎是一件愚蠢的事情......但赌注,不知道我做错了什么。 真的很感谢任何帮助。非常感谢弗朗西斯
在PHP中,您不能读取不存在的变量。对于非现有的普通变量,如$foo
或$bar
你会得到一个未定义变量通知,对不存在的数组索引像$array['foo']
或$array['bar']
你会得到一个未定义指数通知,像$object->foo
或$object->bar
不存在的对象属性你会得到一个未定义的财产的通知。
这是因为在PHP中,变量必须在读访问完成之前声明。 PHP的函数isset
用于测试变量是否存在,array_key_exists
用于数组索引,property_exists
用于对象属性。此外isset
是一种通用工具来测试存在。 (请注意,价值空等同于不存在。)
所以你的情况,你应该测试是否试图读取它之前存在$_POST['name']
:
if (array_key_exists($_POST, 'name')) {
$name = $_POST['name'];
}
// or
if (isset($_POST['name']) {
$name = $_POST['name'];
}
但是注意,$name
存在现在取决于$_POST['name']
的存在。
为了调试,你可以尝试:
的print_r($ _ POST);
它会显示一个post数组中的所有变量。 看看你的变量是否在那里,如果没有 - 你的表单有什么问题。
Leonti
谢谢Leonti。变量在那里。如上所述,值实际上显示在页面中,因此它们被传递。 – frapet 2009-12-06 16:09:37
然后,他们正在某处被取消设置,或者您在页面上看到的值不是来自$ _POST var。 – 2009-12-06 16:14:20
谢谢Gumbo的反馈,尽管我仍然不确定自己做错了什么。我使用isset发出警告。这是否意味着错误地发布了这些值? – frapet 2009-12-06 17:15:03
@francesco:每当你想要读取你不确定的变量时,你需要用'isset'来测试。看一看我已经发布的例子,其中'$ _POST ['name']'的存在在我读取它的值之前进行了测试。但现在'$ name'依赖于'$ _POST ['name']',并且您需要测试该变量是否存在。或者你声明'$ name'为默认值(例如* null *或'“”'),并且只有在存在'$ _POST ['name']'时才覆盖它。 – Gumbo 2009-12-06 17:36:57
谢谢你。 – frapet 2009-12-06 20:33:42