我有一个表单将变量传递给PHP处理脚本。在处理脚本开始PHP如果语句不按预期与filter_var一起工作
之前,我想消毒张贴变量:
$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)[email protected]
我在做什么错?我在某处弄乱了我的语法吗?
这不会解决你的问题,但你应该考虑使用[''==而不是'! != =](http://php.net/manual/en/language.operators.comparison.php) –
为什么你需要清理而不是只检查提供的地址是否有效? – PeeHaa
另一个注意事项:考虑将错误消息传递回表单而不是简单的重定向(因此可能会让用户疑惑为什么表单没有提交)。例如,您可以使用一个简单的url参数来改进当前的方法,例如,该参数会触发表单上的错误显示。 –