![](/img/trans.png)
[英]html_entity_decode after filter_var not working as expected
[英]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_valid
為false
,我想返回到表單頁面:
if ($Email_is_valid == FALSE) {
header('Location: http://'.$_SERVER['HTTP_HOST'].'/form.php');
}
當我輸入無效且需要衛生的電子郵件時,這兩個if
語句都不起作用,例如:
i.am.(totally)invalid@asanemailaddress
我究竟做錯了什么? 我在某處弄亂了語法嗎?
語法似乎不錯。 我認為您的問題是,設置標頭后您沒有結束腳本。 更改為:
if (condition) {
header('Location: www.example.com');
exit();
}
了解如何調試代碼,您可以簡單地回顯某些信息,以了解是否要輸入結構。 一個好的做法是創建一個重定向頁面的函數,它快速,干凈並節省了一些行:
function redirect($page){
header('Location: http://'.$_SERVER['HTTP_HOST']."/$page.php");
exit();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.