2017-01-12 57 views
0

我驗證POST請求的變量和我以前做的是這樣的:在PHP中使用filter_var和htmlentities是否好?

$email = htmlentities($_POST['email']); 

但現在我搜索和了解filter_var和我做這樣的驗證:

$email = filter_var(htmlentities($_POST['email']), FILTER_SANITIZE_EMAIL); 

哪種方法更好?和所有類型的輸入[手機 - 字符串 - 等..]我必須使用?

對不起,我是一個初學者,我已經看過手冊,但我不能理解很多。

感謝您的幫助。

+0

用你的代碼進行測試,看看。 –

+1

'htmlentities'會將'&'變爲'&',但'&'是一個有效的電子郵件字符,而';'不是那麼不使用'htmlentities'來驗證電子郵件。 – apokryfos

+0

@apokryfos,那麼我應該用什麼字符串驗證(如用戶名,或評論..等)? –

回答

1

只可使用電子郵件的以下行:

filter_input(INPUT_POST, "email", FILTER_SANITIZE_EMAIL); 

這將正確刪除非法chracters從電子郵件字符(如;並保持法律的如&+

使用htmlentities可轉一個合法的電子郵件地址,然後FILTER_SANITIZE_EMAIL將會破壞

如果您正在處理用戶輸入的標籤或然後您可以將所述輸入正常存儲爲(使用準備好的語句以允許DB正確地轉義輸入),並在頁面上顯示時使用htmlentities。或者,您可以使用:

filter_input(INPUT_POST, "description", FILTER_SANITIZE_STRING); 

此字符串淨化濾帶條標籤。

你可以檢查更多的過濾器:http://php.net/manual/en/filter.filters.sanitize.php

+0

謝謝兄弟.. –

相關問題