2012-11-05 80 views
1

全部。我想分享我的代碼中發生的一些問題。我有一個HTML表單,使用php發佈並保存到mysql數據庫。如果數據總數不是100,我給出一個驗證表單,它不能發佈。我使用javascript在客戶端或HTML中執行此限制。 是這樣的:PHP - 限制客戶端發佈的數據失敗

$("#submit").click(function(event) { 

        var total_I  = $("#total_I").val(); 
        var total_III = $("#total_III").val(); 
        var total  = 0; 
        /* stop form from submitting normally */ 
        if($("#eval-form").validate().form()) 
        { 

當我們做一些測試計劃,它完美的作品。但是,當這個網站一次啓動並訪問大約500個用戶時,有一些數據在數據庫中保存的數據少於100個。 我的問題是,如何克服這個問題?有沒有更好的方法來限制這種情況? 首先,感謝您的回答

回答

4

如果我寫一本關於網絡安全,標題是「永遠不要相信客戶端」

您並不真正控制客戶端,因此如果javascript被關閉或者某人將自定義查詢放在一起,或者客戶端的行爲不正確,則可能會收到錯誤的數據。

從用戶界面的角度來看,客戶端驗證是一個很好的工具。它在早期捕獲錯誤,並在正確實施時可以減少用戶的挫折感。

作爲安全性或策略執行措施,客戶端驗證是無用的。您必須檢查您在服務器端實際收到的數據,即使這意味着重複在客戶端上完成的工作。

+0

相同的概念,但我有點慢:) – gabrielem

+0

你應該寫這本書:) ..謝謝。真棒的回答,我現在才意識到。我將在我的php代碼中進行驗證。 – Frenda

2

當您使用Jquery進行驗證時,客戶端最好在服務器端替換它。

因此,在PHP中的腳本(我認爲它形成你的標籤),你可以插入數據的第二次驗證。

這將確保數據在您的驗證之後。

+0

謝謝gabrielem。 1學分,我希望有用 – Frenda