【问题标题】:IF statements with OR operator not working带有 OR 运算符的 IF 语句不起作用
【发布时间】:2014-05-01 10:15:58
【问题描述】:
if($action == "send"){
$_POST['name'] =        $name ;
$_POST['email'] =       $email ;
$_POST['phone'] =       $phone  ;


  if(!empty($name) || !empty($email) || !empty($phone)){

  .....
 } else {

  $msg = 'All fields required';

}

//无论我做什么都只显示$msg。

//也试过了

  if(!empty($_POST['name']) || !empty($_POST['email']) || !empty($_POST['phone'])){
  ....
   }

我想要做的是一个表格,通过电子邮件向我发送数据,我希望填写所有字段,所以我可能以错误的方式编写 if 语句。 对不起,如果我之前没有解释清楚。

【问题讨论】:

  • 您是否打印了 $_POST 并且您确定它具有值?
  • 尝试执行 print_r($_POST) 以查看 post global var 中的内容,然后查看 if 是否应该导致“true”。您的 if 测试也不应该使用 && 而不是 ||。对 || 毫无意义。
  • 如果没有更多信息,我们无法回答您的问题。这个if语句和你的逻辑公式有这么大的问题,所以来源于上面的代码。
  • 我试图做的是通过电子邮件向我发送数据的表单,我希望填写所有字段,所以我可能以错误的方式编写 if 语句。对不起,如果我之前没有解释清楚。

标签: php if-statement or-operator


【解决方案1】:

您的代码如下:

如果姓名不为空,或电子邮件不为空,或电话不为空

这意味着只要至少有一个是非空的,那么你就是好的!

很确定这不是你的意思。你想要:

如果姓名不为空,邮箱不为空,电话不为空

使用&& 而不是||,它应该可以工作!

【讨论】:

  • $_POST['name'] = $name; 是错误的。去掉它。如果有什么你可以做的$name = $_POST['name'],但我个人更喜欢避免“镜像”用户输入变量,因为它可以提醒它是用户输入,因此比平时更不安全。
  • 我以前试过这个,但没有用,但现在我尝试了你给我的建议:使用 && 代替 ||。现在工作得很好,谢谢你救了我的命嘿嘿嘿
【解决方案2】:

我认为您对这里涉及的所有负面因素感到困惑。我怀疑你追求的是:

if (!(empty($name) || empty($email) || empty($phone))) {
    ...
} else {
    $msg = 'All fields required';
}

最好写成(在我看来):

if (empty($name) || empty($email) || empty($phone)) {
    $msg = 'All fields required';
} else {
    ...
}

【讨论】:

    【解决方案3】:
    if($name=='' || $email=='' || $phone=='')
    {
        $msg='All fields required';
    }
    else 
    {
        ..............
    }
    

    【讨论】:

      猜你喜欢
      • 2017-12-04
      • 2014-02-17
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      相关资源
      最近更新 更多