1

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

我究竟做错了什么?我在某处搞砸了我的语法吗?

4

1 回答 1

2

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

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

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

function redirect($page){
        header('Location: http://'.$_SERVER['HTTP_HOST']."/$page.php");
        exit();
}
于 2016-02-05T19:35:35.037 回答