代码执行尽管if if语句错误

时间:2014-02-27 20:51:46

标签: php if-statement

我有以下代码:

if ($Type != "DEA" and $VA != "Allowed" and $VolSess != 1) {
     $max_rows = max($CMSReg_num_rows);
     if ($max_rows == 0) {
        mail($to, $subject, $body);
        header('Location: '.bloginfo('home_url').'/profile');
    }
}

我遇到的问题是,尽管if语句为false,但只发送了一封电子邮件,但仍会发送电子邮件。其余代码未执行,即没有重定向。当我注释掉mail()函数时,它不会发送电子邮件。

当我添加此代码时:

if ($VA == "Allowed") {
echo "VA = " . $VA;
}
if ($VolSess == 1) {
echo "VolSess = " . $VolSess;
}

我得到了这个输出:

VA = Allowed VolSess = 1 

所以我知道if语句中的条件是假的。

4 个答案:

答案 0 :(得分:3)

AND&&相比有order of precedence不同。因此,您的表达式不会按预期进行评估。

("$Type" != "DEA" and $VA != "Allowed" and $VolSess != 1)

应该是

(("$Type" != "DEA") and ($VA != "Allowed") and ($VolSess != 1))

("$Type" != "DEA" && $VA != "Allowed" && $VolSess != 1)

让它像你期望的那样工作。这是容易被忽视的微小错误/错误之一。

答案 1 :(得分:0)

尝试:

if ($Type != 'DEA' && $VA != 'Allowed' && $VolSess != 1) 
{
  $max_rows = max($CMSReg_num_rows);
  if ($max_rows === 0)
  {
    mail($to, $subject, $body);
    header('Location: ' . bloginfo('home_url') . '/profile');
  }
}

修改的   上述工作,但oringal问题代码也是如此......问题出在其他地方。

<?php

$Type = 'foo';
$VA = 'Allowed';
$VolSess = 1;

if ($Type != 'DEA' and $VA != 'Allowed' and $VolSess != 1)
{
  $max_rows = 0;
  if ($max_rows === 0)
  {
    echo 'Orig True';
  }
}
else
{
  echo 'fine?';
}

if ($Type != 'DEA' && $VA != 'Allowed' && $VolSess != 1)
{
  $max_rows = 0;
  if ($max_rows === 0)
  {
    echo 'Second True';
  }
}
else
{
  echo 'fine?';
}

?>

两个打印都很好吗?暗示您的错误位于代码的其他位置。

答案 2 :(得分:0)

尝试在...之后做其他事情。

elseif($VA == "Allowed"){}

答案 3 :(得分:0)

  • 尝试使用WordPress wp_mail()
  • die;之后
  • header()并将{302}作为第二个参数添加到header()函数。
  • 在PHP代码的基础上使用ini_set('display_errors', true); error_reporting(-1);启用错误报告。

告诉我们您在进行这些更改后所看到的内容。