显然我知道array_key_exists
没有给出误报。我做错了什么。我只想引起你的注意。 :)
但是说真的。我这样做是为了练习。
这是我的代码:
<?php
$error = "";
if($_POST)
{
if (!array_key_exists('email',$_POST)) {
$error .= "<p>You did not submit an e-mail address. Please try again.</p>";
}
if (!array_key_exists('password',$_POST)) {
$error .= "<p>You did not submit a password. Please try again.</p>";
}
echo $error;
print_r($_POST);
}
?>
如果我不提交电子邮件或密码,echo $error
则不会输出任何内容。 print_r($_POST)
输出我发送的任何内容。
我在这里缺少什么?
答案 0 :(得分:1)
$_POST['email']
和['password']
存在但是空的,您应该看到print_r($_POST);
您应该检查value
而不是key
。
答案 1 :(得分:0)
我认为你应该使用
empty($_POST['email'])
而不是array_key_exists
。
答案 2 :(得分:0)
为什么不检查function doprint {
param( [string[]]$a )
$a[0] ; $a[1]
}
$arg = @('yes','no')
doprint $arg
而不是empty($_POST['email'])
?
两者都会检查!array_key_exists
是否存在,并检查它们是否不是key
。
NULL
还会检查它是否为empty
数组,0(作为int和作为字符串),空字符串等。
修改强>
我迟到了
答案 3 :(得分:-1)
我会在表单中添加隐藏的输入
<input type="hidden" name="formSubmitted" value="1" />
然后您可以检查已提交的表单,而不是检查您的$_POST
数组是否存在。此外,如果您的字段在提交时都是空的,则会提供单独的机制来识别,而不是假设您的两个字段都有效。
<?php
$error = "";
if(isset($_POST['formSubmitted']) && $_POST['formSubmitted'] == 1) {
if (!array_key_exists('email',$_POST)) {
$error .= "<p>You did not submit an e-mail address. Please try again.</p>";
}
if (!array_key_exists('password',$_POST)) {
$error .= "<p>You did not submit a password. Please try again.</p>";
}
echo $error;
print_r($_POST);
}
?>
我还假设您(将)有其他形式的验证,以确保电子邮件地址和密码符合此处未显示的一些基本要求。