我有一个将变量发布到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_valid
为false
,我想返回表单页面:
if ($Email_is_valid == FALSE) {
header('Location: http://'.$_SERVER['HTTP_HOST'].'/form.php');
}
当我输入既无效又需要消毒的电子邮件时,这两个if
语句都不起作用,如:
i.am.(totally)invalid@asanemailaddress
我做错了什么?我把语法搞砸了吗?
答案 0 :(得分:2)
语法似乎很好。我认为您的问题是您在设置标题后没有结束脚本。将其更改为:
if (condition) {
header('Location: www.example.com');
exit();
}
了解如何调试代码,您可以简单地回复一些内容,以了解您是否正在输入结构。一个好的做法是创建一个重定向页面的功能,它快速,干净并保存一些行:
function redirect($page){
header('Location: http://'.$_SERVER['HTTP_HOST']."/$page.php");
exit();
}