PHP if 语句未按预期使用 filter_var

PHP if statement not working as expected with filter_var

我有一个表单,可以将变量发布到 PHP 处理脚本。

在处理脚本开始之前,我想清理发布的变量:

$Contact_Name = filter_var($_POST['contactName'], FILTER_SANITIZE_STRING);
$Company = filter_var($_POST['company'], FILTER_SANITIZE_STRING);
$Telephone = filter_var($_POST['telephone'],FILTER_SANITIZE_NUMBER_INT);

到目前为止。太好了

但是清理和验证电子邮件真的很痛苦。

$Email = $_POST['email'];
$Sanitised_Email = filter_var($Email, FILTER_SANITIZE_EMAIL);
$Email_is_valid = filter_var($Email, FILTER_VALIDATE_EMAIL);

如果$Sanitised_Email$Email不一样,我想返回表单页面:

if ($Sanitised_Email != $Email) {
header('Location: http://'.$_SERVER['HTTP_HOST'].'/form.php');
}

如果$Email_is_validfalse,我想返回表单页面:

if ($Email_is_valid == FALSE) {
header('Location: http://'.$_SERVER['HTTP_HOST'].'/form.php');
}

当我输入一封既无效又需要清理的电子邮件时,这两个 if 语句都不起作用,例如:

i.am.(totally)invalid@asanemailaddress

我做错了什么?我是不是把语法搞砸了?

语法似乎不错。我认为你的问题是你在设置 header 后没有结束你的脚本。将其更改为:

if (condition) {
        header('Location: www.example.com');
        exit();
}

学习如何调试你的代码,你可以简单地回显一些东西来知道你是否正在进入一个结构。一个好的做法是创建一个重定向页面的函数,它快速、干净并节省一些行:

function redirect($page){
        header('Location: http://'.$_SERVER['HTTP_HOST']."/$page.php");
        exit();
}