2012-06-18 18 views
0

我有一個比較簡單的問題。PHP - 使用PHP驗證表單可以保證完全驗證,無論客戶端是什麼瀏覽器?

使用PHP將保證表單總是以使用PHP編碼的方式進行驗證嗎?

這之中......如果你這樣做:

if (strlen($_POST['myInput'] == 0) 
{ 
    Do this... 
} 

將其應用於無論什麼客戶端的用戶正在使用?例如。 IE瀏覽器,Firefox,移動設備(黑莓,三星),Linux瀏覽器?

我問這個問題的原因是因爲我根本看不到應用html驗證如pattern這一點。

任何有關此輸入將不勝感激。謝謝!

編輯:

if (!preg_match("#^([0-9 ]{10,13})?$#", $_POST['myInput'])) 
{ 
    // Apply error pointers 
    $_SESSION['myInputError'] = 'class="badInput" autofocus="autofocus"'; 

    include "$docRoot/html/forms/reg/user_info.html.php"; 
    exit(); 
} 
+1

客戶端驗證的重點是用戶友好性。用戶可以看到數據是錯誤的,並立即修復它,而無需提交表單。 (這對於大量頁面和包含大量數據的表單來說更有用。) – cHao

+0

但是,您可以使用一些深思熟慮的PHP代碼輕鬆編寫相同的效果?這將是100%兼容的,不包括當前的css應用程序。 –

+0

您能否更詳細地解釋一下您的陳述:「我根本沒有看到應用html驗證方式的問題」? –

回答

3

答案是肯定的,PHP是由服務器運行而不是客戶端,爲此它將始終把輸入相同的方式。因此,除非您根據客戶的瀏覽器制定特定的代碼以使其行爲不同,否則它將以相同的方式處理輸入。

+0

感謝您的意見。在這種情況下,應用其他類型的驗證(如使用html模式屬性)真的有用嗎? –

+3

像HTML模式屬性一樣的客戶端驗證僅僅是爲了方便。永遠不要依賴它。它可以非常快速地完成,並且簡單地指導用戶輸入正確的輸入,而不必花費時間連接到服務器以進行適當的驗證。 –

+0

正如亞歷克斯所說,HTML/JS驗證是並且應該只是爲了方便或引導用戶。在用戶方面發生了什麼,你永遠無法控制,但服務器端只有你,開發者才能訪問。 –

2

服務器端驗證應確保表單始終有效。所以如果你只有時間去開發一個,選擇服務器端驗證。

這就是說,因爲每個表單域單獨可實時在用戶填寫出來驗證,使他們能夠更迅速地是否已經正確填寫出來告訴客戶端驗證是非常有用的。