我的表单包含电话和电子邮件字段。 许多人可能不想/能够同时放两者, 所以我想,验证器只需要 其中一个被填满,而不是要求两者都填满。
我已经尝试过不同的方法来做这件事,但我对PHP很陌生, 所以我不能带任何。
这可能吗?
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["name"]))
{$nameErr = "Name is required";}
else
{$name = test_input($_POST["name"]);}
if (empty($_POST["email"]))
{$emailErr = "Email is required";}
else
{$email = test_input($_POST["email"]);}
if (empty($_POST["phone"]))
{$phone = "";}
else
{$website = test_input($_POST["website"]);}
if (empty($_POST["comment"]))
{$comment = "";}
else
{$comment = test_input($_POST["comment"]);}
}
谢谢。
答案 0 :(得分:1)
正如您的标题所述,填写了1/2个表单字段。
$i = 0; // PUT THIS BEFORE YOUR IF STATEMENTS
在你的陈述中:
if (empty($_POST["phone"])) {
$phone = "";
} else {
$i++; // PUT THIS IN ALL YOU WANT TO COUNT, IT WILL ADD 1 to $i EACH TIME YOU CALL IT
$website = test_input($_POST["website"]);
}
现在结束,如果
// YOU NEED TO CHANGE YOUR NUMBERS TO WHATEVER COUNT YOU WANT
if ($i < 2) { // IF $i IS LESS THAN 2
// YOUR CODE HERE
} else { // IF $i IS 2 OR MORE
// YOUR CODE HERE
}
希望这有点用处!
或如上所述,您可以使用
if (@$A && @$B) { // REQUIRES BOTH TO BE TRUE
// YOUR CODE HERE
} elseif (@$A || @$B) { // REQUIRES ONLY ONE TO BE TRUE
// YOUR CODE HERE
} else { // NONE ARE TRUE
// YOUR CODE HERE
}
如果您想知道上面的@
符号,他们只是检查它们是否已设置,您可以将代码更改为!empty($A)
,这就是您在上面使用的内容。将!
放在空函数之前会检查它是否为假或实际设置了$A
。
答案 1 :(得分:0)
如果我必须检查像你这样的表格,我会这样做:
$res = '';
if(empty($_POST['name']))
$res .= 'The name is required.<br>';
if(empty($_POST['email']))
$res .= 'The email is required.<br>';
if(empty($_POST['phone']) && empty($_POST['email']))
$res .= 'You need to enter phone or email.<br>';
if(strlen($res) > 0) {
echo 'We have these errors:';
echo $res;
}
else {
echo 'No Errors!';
}
如果您每次只想显示一个错误,请使用以下代码:
$res = '';
if(empty($_POST['name']))
$res = 'The name is required.<br>';
elseif(empty($_POST['email']))
$res = 'The email is required.<br>';
elseif(empty($_POST['phone']) && empty($_POST['email']))
$res = 'You need to enter phone or email.<br>';
if(strlen($res) > 0) {
echo $res;
}
else {
echo 'No Error!';
}
即使我认为这是非常基本的,我也会解释上面提到的部分,即使你可以从php.net查找它:
$res .= 'The name is required';
“。=”运算符将“需要名称”部分添加到变量$ res。如果第一次发生这种情况,变量将为空,因为我将其初始化为空字符串。对于每个正在进行的行,将在字符串中添加另一个错误消息。
if(strlen($res) > 0) {
strlen()将返回$ res中字符串的长度。如果没有发生错误,它仍然是空的,因此strlen()将返回0.