2013-03-15 34 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