2010-03-25 270 views
0

是否需要驗證名稱或街道地址?當我有它以下面的格式編碼。如果是的話,爲什麼?PHP表單驗證問題?

$address = mysqli_real_escape_string($mysqli, htmlentities($_POST['address'])); 
$name = mysqli_real_escape_string($mysqli, htmlentities($_POST['name'])); 
+0

validate!= escape – 2010-03-25 10:55:29

回答

1
  1. 不要存儲值由htmlspecialchars/htmlentities /等你的數據庫過濾 - 在HTML/XML的/ etc文件顯示之前直接做到這一點。
  2. 如果您確定名稱爲blah blah <>DAS#^^[email protected]@vm/.,czc,那麼此代碼看起來很好。
1

您知道哪些名稱或地址包含'$'或'%'?您可以執行簡單的檢查來檢查用戶是否愚蠢。通常,一個名稱只包含單詞字符(如果它們是Jr,Sr等,有時候會包含逗號和句點),並且地址只包含字母數字字符(除非它們縮寫,在這種情況下可能包含句點)。這是沒有必要的,但我個人會把檢查,所以你不會最終只是進入隨機BS只是有趣的用戶(這是我的寵物peeves,對不起)。

0

你看起來有點混了,因爲你有逃跑的數據,沒有過濾的2種手段時,規則是FIEO濾波輸入轉義輸出

過濾:

如果您認爲一個「名」只能是大寫和小寫字母,長度在2到50個字符之間,可以包含破折號和單引號('),那麼你應該:

刪除任何不符合你自己的定義上面的例子(使用正則表達式也許) 或 中止操作

根據您想如何樣是你的用戶/潛在裂解

filter_var()也是在這種情況下非常有用的。

逃離

你逃避準備的數據爲下一個環境中的數據正走向;

如果它進入數據庫,那麼你會使用你的mysqli_real_escape_string(),如果你在html中回顯屏幕然後使用htmlentities()等等。

HTH