Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jQuery聊天应用程序垃圾邮件_Php_Jquery_Ajax - Fatal编程技术网

Php jQuery聊天应用程序垃圾邮件

Php jQuery聊天应用程序垃圾邮件,php,jquery,ajax,Php,Jquery,Ajax,我有一个ajax->PHP简单聊天,我想阻止用户发送太多聊天请求或太快的消息。限制任何用户可以发送的消息量以避免垃圾邮件的好方法是什么。我已经对空值和空白消息进行了正常检查。我正在寻找一种防止用户背靠背发送多条消息的方法,比如不断按发送按钮或按回车键。我想将此操作限制为每5秒钟发送一条消息,或者如果用户在5秒钟内发送了太多问题,从而在能够发送另一条消息之前强制等待一段时间。实施时间延迟:用户在一分钟内发布聊天的次数不能超过15次 处理此问题的简单方法是在发送新的聊天信息后启动计时器,然后禁用聊天

我有一个ajax->PHP简单聊天,我想阻止用户发送太多聊天请求或太快的消息。限制任何用户可以发送的消息量以避免垃圾邮件的好方法是什么。我已经对空值和空白消息进行了正常检查。我正在寻找一种防止用户背靠背发送多条消息的方法,比如不断按发送按钮或按回车键。我想将此操作限制为每5秒钟发送一条消息,或者如果用户在5秒钟内发送了太多问题,从而在能够发送另一条消息之前强制等待一段时间。

实施时间延迟:用户在一分钟内发布聊天的次数不能超过15次

处理此问题的简单方法是在发送新的聊天信息后启动计时器,然后禁用聊天信息提交,直到计时器达到某个数字(例如5秒、15秒、30秒)。通过禁用并灰显“发送”按钮,您可以直观地向用户指出这一点。

我觉得每分钟阈值方法比为每条消息设置一个恒定的时间延迟要好。这会让人感觉更自然


如果在客户端的JS中实现,那么在服务器端也检查速率,如果超过速率,则返回错误代码是明智的。如果有人试图通过请求泛滥来利用AJAX端点,但您也可以实施某种CSRF策略来避免这种利用情况。

您可能需要将聊天请求存储在数据库或会话的某个位置。我也更喜欢这样的方法,但是如何使用JS保持每分钟的阈值呢?使用
window.setInterval
并且每次AJAX请求都在全局变量中保持一个运行计数。你可以利用间隔时间,每隔一分钟左右将这些计数返回到0。如果您有多个聊天窗口,则可以保留一个数组,其中包含每个活动聊天窗口的计数。