我有一個表單將變量傳遞給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參數來改進當前的方法,例如,該參數會觸發表單上的錯誤顯示。 –