我有以下代码:
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语句中的条件是假的。
答案 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)
wp_mail()
。die;
之后header()
并将{302}作为第二个参数添加到header()
函数。ini_set('display_errors', true); error_reporting(-1);
启用错误报告。告诉我们您在进行这些更改后所看到的内容。