PHP if语句与filter_var无法正常工作

时间:2016-02-05 19:17:53

标签: php forms filter-var filter-validate-email

我有一个将变量发布到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

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

1 个答案:

答案 0 :(得分:2)

语法似乎很好。我认为您的问题是您在设置标题后没有结束脚本。将其更改为:

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

了解如何调试代码,您可以简单地回复一些内容,以了解您是否正在输入结构。一个好的做法是创建一个重定向页面的功能,它快速,干净并保存一些行:

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