Php 尽管if语句为false,但仍执行代码

Php 尽管if语句为false,但仍执行代码,php,if-statement,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 ($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语句是假的,但还是发送了一封电子邮件,并且只发送了一封电子邮件。代码的其余部分没有执行,即没有重定向。当我注释掉mail()函数时,它不会发送电子邮件

当我添加此代码时:

if ($VA == "Allowed") {
echo "VA = " . $VA;
}
if ($VolSess == 1) {
echo "VolSess = " . $VolSess;
}
我得到这个输出:

VA = Allowed VolSess = 1 
因此我知道if语句中的条件为false。

尝试:

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');
  }
}
编辑 上面的方法是有效的,但原始问题代码也是有效的。。。问题在别处

<?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?';
}

?>

两者都打印“罚款”,表示您的错误在代码的其他地方。

请尝试:

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');
  }
}
编辑 上面的方法是有效的,但原始问题代码也是有效的。。。问题在别处

<?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?';
}

?>

两者都打印“罚款”,表示您的错误在代码的其他地方。

请尝试:

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');
  }
}
编辑 上面的方法是有效的,但原始问题代码也是有效的。。。问题在别处

<?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?';
}

?>

两者都打印“罚款”,表示您的错误在代码的其他地方。

请尝试:

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');
  }
}
编辑 上面的方法是有效的,但原始问题代码也是有效的。。。问题在别处

<?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?';
}

?>


两者都打印“很好”,这意味着您的错误在代码的其他地方。

请在

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

试着在

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

试着在

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

试着在

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

&&
相比有一个不同的值,因此表达式的计算结果与您预期的不一样

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

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


让它像你期望的那样工作。这是一个很容易被忽略的小错误/bug。

&
相比有一个不同之处,因此表达式的计算结果与您预期的不一样

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

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


让它像你期望的那样工作。这是一个很容易被忽略的小错误/bug。

&
相比有一个不同之处,因此表达式的计算结果与您预期的不一样

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

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


让它像你期望的那样工作。这是一个很容易被忽略的小错误/bug。

&
相比有一个不同之处,因此表达式的计算结果与您预期的不一样

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

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

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

  • 尝试使用WordPress

  • 模具
    header()
    之后,并将302作为第二个参数添加到
    header()
    函数中
  • 使用
    ini\u集启用错误报告('display\u errors',true);错误报告(-1)在PHP代码之上
告诉我们进行这些更改后您看到了什么。

  • 尝试使用WordPress

  • 模具
    header()
    之后,并将302作为第二个参数添加到
    header()
    函数中
  • 使用
    ini\u集启用错误报告('display\u errors',true);错误报告(-1)在PHP代码之上
告诉我们进行这些更改后您看到了什么。

  • 尝试使用WordPress

  • 模具
    header()
    之后,并将302作为第二个参数添加到
    header()
    函数中
  • 使用
    ini\u集启用错误报告('display\u errors',true);错误报告(-1)在PHP代码之上
告诉我们进行这些更改后您看到了什么。

  • 尝试使用WordPress

  • 模具
    header()
    之后,并将302作为第二个参数添加到
    header()
    函数中
  • 使用
    ini\u集启用错误报告('display\u errors',true);错误报告(-1)在PHP代码之上


告诉我们您在进行这些更改后看到了什么。

尝试
var\u dump()
这两种方法……代码中没有提到
VS=
。我不认为我们了解了全部情况。从if中转储所有变量,您就会找到解决方案您不应该引用只包含变量的字符串。不要写
“$Type”
,只要写
$Type
@Ali就行了。不要猜测出了什么问题,听上面的第一条评论,转储变量,自己完成逻辑。两种方法都试试
var\u dump()
,代码中没有提到
VS=
。我不认为我们了解了全部情况。从if中转储所有变量,您就会找到解决方案您不应该引用只包含变量的字符串。不要写
“$Type”
,只要写
$Type
@Ali就行了。不要猜测出了什么问题,听上面的第一条评论,转储变量,自己完成逻辑。两种方法都试试
var\u dump()
,代码中没有提到
VS=
。我不认为我们了解了全部情况。从if中转储所有变量,您就会找到解决方案您不应该引用只包含变量的字符串。不要写
“$Type”
,只要写
$Type
@Ali就行了。不要猜测出了什么问题,听上面的第一条评论,转储变量,自己完成逻辑。两种方法都试试
var\u dump()
,代码中没有提到
VS=
。我不认为我们了解了全部情况。从if中转储所有变量,您就会找到解决方案您不应该引用只包含变量的字符串。不要写
“$Type”
,只要写
$Type
@Ali不要猜测出了什么问题,听上面的第一条评论,转储变量,自己完成逻辑。@Fabio用
&&
代替
有三个变化,这个问题最重要的一个是“and”和“and&&”开关。