2013-03-15 31 views
-2

我有一個ajax-> PHP簡單的聊天,我想阻止用戶發送太多的聊天請求,或消息太快。限制任何用戶可以發送的消息量以避免垃圾郵件是一種好方法。我已經完成了對空值和空白消息的正常檢查。我正在尋找一種方法來防止用戶反覆發送多個消息,例如不斷按下發送按鈕或按下回車鍵。我想限制此操作每5秒1條消息,或者如果用戶在5秒鐘內發送太多問題以強制等待一段時間才能發送另一條消息。jQuery聊天應用程序垃圾郵件

+0

您可能需要將聊天請求存儲在數據庫或會話的某處。 – 2013-03-15 22:30:29

回答

0

執行時間延遲:用戶無法在一分鐘內發帖超過15次。

1

處理此問題的一種簡單方法是在發送新的聊天消息後啓動計時器,然後禁用聊天消息提交直到該計時器達到特定數目(例如5秒,15秒,30秒)。您可以通過禁用和灰色顯示「發送」按鈕,直觀地向用戶指明此情況。

2

我覺得每分鐘定位的方法會比爲每條消息設置一個恆定的時間延遲要好。這會感覺更自然。

如果在客戶端使用JS實現,那麼在服務器端也檢查速率並且在超出速率的情況下返回錯誤代碼會很明智。如果有人試圖通過淹沒請求來利用AJAX端點,但是您也可以實施某種CSRF策略來避免該利用情形。

+0

我更喜歡這樣的方法,但我如何保持這個門檻每分鐘與JS? – kabuto178 2013-03-16 00:00:34

+0

使用'window.setInterval'並且每次AJAX請求時,在全局變量中保持一個運行的計數。您可以使用間隔每分鐘將這些記錄重新打回0。如果您有多個聊天窗口,則可以爲每個活動的聊天窗口保留一個數組。 – gmartellino 2013-03-16 00:06:08