我正在開發一個PHP應用程序。它以html格式包含其他內容。
我的問題是如何以簡單的方式實現表單驗證,而無需在服務器(使用PHP)和瀏覽器(使用Javascript)上覆制驗證代碼。
我設計了一個使用ajax的方法。當一個輸入失去焦點(onblur事件)時,它會使用它包含的數據對服務器進行ajax調用。如果該值無效或者爲空字符串,則該響應將是錯誤消息。 但是,代碼在服務器和瀏覽器上都很臃腫,可能很有問題。 你能指點我正確的方向嗎?總是輸入驗證複雜或我應該使用不同的方法? 非常感謝那些花時間閱讀我的文章,併爲那些回答的人提供額外的坦克。使用PHP和javascript進行HTML表單驗證的簡單方法
回答
輸入驗證是非常複雜的。您需要確保輸入對您的數據類型完全有效。這通常包括每個項目的自定義驗證。對於客戶端和服務器端驗證都沒有substiute。
客戶端驗證提供了一個活潑的UI。用戶輸入的每件東西都可以並且應該在客戶端進行驗證,以便不必向服務器發出請求(減少延遲)。這並不意味着它是服務器端驗證的替代品,因爲任何人都可以通過像螢火蟲這樣的工具看到請求,並將他們想要的任何數據提交給服務器。你必須確保數據
服務器端是期望的類型或者你可以打開自己SQL注入或許多其他惡意攻擊。
這其實是一個很好的理由看任何的許多PHP MVC框架。大部分都包含表單助手,這將顯着減少您爲驗證而編寫的代碼。
總是使用服務器端腳本來檢查輸入,因爲如果你使用客戶端(JavaScript)針對任何人,然後可以讓你通過使用不同的技術,像禁止的JavaScript等
傻瓜你總是需要服務器端驗證。但是,您可以通過依賴第三方庫讓您的客戶端更輕鬆。
做基本驗證最簡單的方法是使用HTML5。這包括必填字段,數字範圍和正則表達式檢查等內容。沒有第三方庫需要和瀏覽器不能HTML5將只是忽略驗證。這是沒有問題的,因爲輸入將在服務器上進行驗證。
另一種方法是使用jQuery validation extension。有了這個庫,你只需要在你的表單域中輸出一些類。
如果您使用的是Zend_Form庫生成表單並做驗證,你可以在這篇文章已經看清楚:http://codeutopia.net/blog/2008/04/04/client-side-validation-with-zend_form/
我強烈建議你Bassistance jQuery Validation plugin。
總是與此一起實現強大的服務器端驗證。
我只是發佈數據到一個PHP驗證通過Ajax的一切。然後我在json字符串中返回錯誤,每個錯誤都有失敗輸入的名稱和一個錯誤字符串。使用jQuery我循環瀏覽json對象,並將輸入讀取並列出錯誤字符串。你可以將表單提交給這個腳本,這樣如果javascript被關閉,表單將被檢查到相同的php腳本。
function submitForm() {
$.ajax({
type: 'post',
url: 'cgi-bin/s_contact.php',
data: $("#contact").serialize(),
dataType: 'json',
success: function(data) {
if(data.answer == 'true') {
$("#showErrors").removeClass("progressbar");
$("#showErrors").html('<h2>Message Has Been Sent!</h2>');
setTimeout(function() {
window.location = $("#zsite").val();
},2000);
}
else {
se = $("#showErrors");
se.removeClass("progressbar");
se.html('');
se.append('<ul id="showeror"></ul>');
$.each(data,function(index,val) {
$('input[name='+index+']').css('background-color','#ff9');
$('#showeror').append('<li>'+val+'</li>');
});
}
},
error: function(msg) {
alert('Error: '+msg.error);
}
});
}
如果你使用一個很好的JavaScript驗證插件,你會發現它們與你的服務器端驗證攜帶十分方便。我可能需要進一步解釋這個,所以請忍受一點。我會參考http://rickharrison.github.com/validate.js/來幫助我,但還有其他一些。
就我個人而言,我使用Symfony表單框架進行驗證,但您可以使用其他框架或自己去做。重要的是,只有定義了一組驗證規則,一旦可以反過來用於驅動客戶端驗證。
這樣你就不會在兩個單獨的驗證過程之間有任何不一致,確保你的應用程序是乾的。此外,您的客戶端驗證可以加載頁面,因爲這些規則已經在您的服務器端代碼中預先定義,並且您不需要所有這些ajax請求。
如果您不熟悉任何PHP表單框架,或者我的意思是定義驗證規則,我可以使事情更清晰。
以下數組可用於在服務器端循環兩個$ _POST字段(電子郵件和數字)。這些信息也可以很容易地傳遞給客戶端驗證器(例如json_encode($ validators))。根據客戶端預期其規則的格式,您可能需要重新修改一些內容。但更重要的是,您的驗證邏輯存儲在一個地方。
$validators = array(
'email' => array(
'rules' => array(
'blank' => false,
'invalid' => '/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i',
),
'messages' => array(
'blank' => 'Missing email',
'invalid' => 'Invalid email',
),
),
'number' => array(
'rules' => array(
'blank' => false,
'invalid' => '/\d/',
),
'messages' => array(
'blank' => 'Missing number',
'invalid' => 'Not a number'
),
......
好的,但是如果我必須驗證數據庫中的數據呢?客戶端驗證不能執行此操作。 –
好的理念來定義數據結構中的驗證規則,並根據它生成javascript代碼和php代碼。 –
我忙於那些學習Yii框架的日子 - 從未使用過框架,也沒有使用面向對象的方法。無論如何,這裏有一些驗證類,但我還沒有到達那些章節。 –
- 1. 使用Javascript進行HTML表單驗證
- 2. 使用javascript進行PHP表單驗證
- 3. 通過JavaScript,jQuery或PHP進行簡單的RSVP表單驗證?
- 4. 使用javascript進行簡單的表單驗證
- 5. 使用javascript驗證表單的正確方法(簡單)
- 6. 使用SASS進行HTML表單驗證?
- 7. 使用JavaScript和html進行表單驗證
- 8. JavaScript和HTML表單驗證
- 9. 使用JavaScript進行表單驗證
- 10. 使用javascript進行xsl表單驗證
- 11. 使用Javascript進行Django表單驗證
- 12. 對簡單表單進行AJAX驗證
- 13. 使用php和javascript進行表單驗證
- 14. 使用PHP和Javascript安全進行表單驗證
- 15. PHP表單驗證 - 簡單
- 16. 使用PHP進行表單驗證
- 17. 使用PHP進行JQuery表單驗證
- 18. 使用GUMP進行PHP表單驗證
- 19. 使用PHP和JavaScript驗證表單?
- 20. 表單驗證 - 使用PHP和Javascript
- 21. 使用Javascript進行實驗的簡單方法?
- 22. 使用代碼進行簡單驗證
- 23. 使用SQLAlchemy進行簡單驗證
- 24. 簡單的方法驗證
- 25. 通過javascript進行驗證後html-php表單提交
- 26. 簡單的PHP表單驗證和驗證符號
- 27. 使用PHP的HTML表單驗證
- 28. 的Javascript驗證HTML表單
- 29. 使用Mail html模板進行PHP表單+ Google reCAPTCHA驗證
- 30. 使用jquery serialize()函數進行簡單表單驗證
它總是好的,同時驗證瀏覽器和服務器上... – Drewdin
客戶端是用戶的滿意度,並限制從輸入數據的脆弱性,同時服務器驗證是用於最小化與數據處理的安全隱患。 – swapnesh