2012-02-14 22 views
2

如果我能夠使用PHP 5,這會更容易一些,但這不是一個可行的選擇嗎?

我已經在使用this stackoverflow thread的RFC 2822來驗證電子郵件格式是否有效,並且認爲這是在表單頁面上使用JS,這不是最佳實踐。

我將在保存之前再次驗證它是否符合此格式,但我想知道是否有任何方法可以幫助防止SQL注入?

+1

「不是最佳實踐」==「針對故意攻擊完全無用」 – Quentin 2012-02-14 16:15:07

+0

不確定你的意思 - 防止SQL注入在PHP 4中與在PHP 5中相同。你的意思是電子郵件*標題*注射? – 2012-02-14 16:15:10

+1

[停止SQL注入PHP的最佳方法]的可能的重複(http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php) – Quentin 2012-02-14 16:15:39

回答

3

錯誤的方式 - 「永遠不要相信用戶輸入」!

首先確保數據是你想要的格式,然後查詢數據庫。因此,首先檢查$ _POST [email_address]是否是有效的電子郵件格式,例如,與正則表達式。只有使用有效的電子郵件格式,才能查詢數據庫。

電子郵件正則表達式(PHP)代碼:

<?php 
$email = "[email protected]"; 

if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) { 
    echo "Email is valid."; 
} 
else { 

    echo "Email in invalid."; 
} 
?> 
+0

好吧,剛纔閱讀,你檢查有效的格式。那麼您如何期待這些數據不是EMAIL呢? – djot 2012-02-14 16:24:45

+1

當然,驗證格式是一個好主意,但對於來自用戶的任何內容,我總是會推薦準備好的語句(顯然在PHP 4中不可用,因此rdlowrey的評論爲何有這麼多upvotes),或者至少在使用'mysql_real_escape_string()'**時,還可以使用任何類型的正則表達式來檢查您可能正在使用的類型。 – Mike 2012-02-14 16:28:57

-1

使用mysql_real_escape_string()輸入您已驗證了它的你應該使用在所有的輸入,會進入該功能的電子郵件後數據庫。