我的表单有"电话"answers"电子邮件"字段。许多人可能不想/不能两者都放,所以我想,验证器只需要其中一个已填充,而不是要求两个都已填充。
我试着想出不同的方法来做这件事,但我对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"]);}
}
谢谢。
如标题所示,将填写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)
,这就是您在上面使用的。将!
放在空函数之前,检查它是否为false或$A
是否已实际设置。
如果我必须像你一样检查表格,我会这样做:
$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。