PHP-检查是否填写了两个表单字段中的一个


PHP - Check if one of two form fields is filled?

我的表单有"电话"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。