簡體   English   中英

PHP if語句無法與filter_var一起正常工作

[英]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_validfalse ,我想返回到表單頁面:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM