只需要2个字段中的一个,不起作用

时间:2014-07-17 03:47:39

标签: php html forms

所以我有一个基本表格,您可以输入您的电子邮件或电话号码,然后输入所需的用户名。所以我想要做的只是输入电话号码电子邮件。所以这就是我正在做的事情

这是我的变量

$email = htmlspecialchars($_POST['email'], ENT_QUOTES, 'UTF-8');
$phone = htmlspecialchars($_POST['phone'], ENT_QUOTES, 'UTF-8');

我如何检查字段

if(empty($email) || empty($phone)){
    $errors['num_em'] = "Enter a valid email or phone number";
}

标记

                     
    <p class="alternative">OR</p>
    <div id="DIV_7">
        <input type="text" name="email" placeholder="Email" id="INPUT_8" autocomplete="off"/>
    </div>

这个问题是它让我输入电子邮件和电话,这很奇怪,因为我正在使用OR运算符。有任何想法吗?

2 个答案:

答案 0 :(得分:2)

现在的方式,如果一个或另一个是空的,它将会失败。

您想要的是AND运算符&&

if(!filter_var($email, FILTER_VALIDATE_EMAIL) && empty($phone))
{
    $errors['num_em'] = "Enter a valid email or phone number";
}

Live DEMO

为什么?

因为如果电子邮件是空的并且电话是空的,我们会失败。

但是,如果电子邮件不是空的并且电话是不符合要求的,那么我们是安全的,因为有1个填充而另一个是空的。

答案 1 :(得分:0)

试试这个:

if ($email == "" && $phone == "") {
    $errors['num_em'] = "Enter either a valid email or phone number";
} else if ((strlen($email) > 0) && (strlen($phone) > 0)) {
    $errors['num_em'] = "Enter either a valid email or phone number";
}

这样,如果两个字段都为空,则会出错。如果两个字段都已填满,则仍会出现错误。因此,只能输入一个字段。