如何防止用户发送垃圾邮件?比如,如果他一次又一次地快速,快速地输入评论,如何阻止用户?
HTML:
<p>
<a href="javascript:void(0);" class="add_more">Add More</a>
</p>
<table border="0" width="500" cellspacing="0">
<tbody class="append_data"></tbody>
<tr>
<td>
<textarea name="description" id="description"></textarea>
</td>
</tr>
</table>
CSS:
#description{
width:400px;
}
.description_text{
border:#333333 solid 1px;
width:400px !important;
}
.append_data{
white-space: pre-wrap; /* CSS3 */
white-space: -moz-pre-wrap; /* Firefox */
white-space: -pre-wrap; /* Opera <7 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* IE */
}
jQuery的:
$('.add_more').click(function(){
var description = $('#description').val();
$(".append_data").append('<div class="description_text">'+description+'</div><br><br>');
});
答案 0 :(得分:0)
答案 1 :(得分:0)
这个怎么样......
当你点击它时,我已经让它隐藏了“添加更多”链接10秒......
$('.add_more').click(function() {
var description = $('#description').val();
$(".append_data").append('<div class="description_text">'+description+'</div><br><br>');
var $this = $(this);
$this.hide();
setTimeout(function() {
$this.show();
}, 10000);
});
答案 2 :(得分:0)
我使用了sessionStorage变量并设置了一个间隔。这使得您无法在添加内容
后单击添加更多按钮60秒`sessionStorage.timer = 0;
setInterval(function(){if (sessionStorage.timer > 0) {sessionStorage.timer--}},1000);
$('.add_more').click(function(){
if (sessionStorage.timer == 0){
sessionStorage.timer += 30
var description = $('#description').val();
$(".append_data").append('<div class="description_text">'+description+'</div><br><br>');
}
});`
答案 3 :(得分:0)
如果是人类放入垃圾评论,那么使用set-timeout等功能或使用像jQuery Debounce这样的插件,设置为60秒,让人们感到沮丧。
假设,如果你只是做'限速'而不是垃圾评论,那么上述解决方案就可以了(有助于'聊天室'就像行为一样)以防止人们像
一样一
B'/ P>
C
d
ë
...后
它仍然没有使用服务器端那么强大,但它可以让你在那里一半。
但是如果它是垃圾箱,你可以使用一些不同的技术,设置超时不会(因为它们可以在你的站点锤击24小时/天没有问题)。首先,正如少数人指出的那样,服务器端验证。他们发出AJAX请求,您的服务响应,您检查他们的个人资料,并使用上次发布的变量,检查当前时间。如果当前时间 - 上次发布&lt; interval,返回一个可以用jQuery.ajax a la
处理的消息.done(function(data) {
if(data.timeoutCode == 1) {
$.append("You can't post again so quickly");
}})
你也可以使用一种奇怪的老hacky技术来添加一个额外的字段,通常会填充垃圾邮件......就像
<input type="text" name="location" style="display:none"></input>
和垃圾邮件程序是盲目的,他们将填写所有字段,认为他们将得到服务器响应,它失败了。但是,在javascript方面,当你去提交时,检查你的onclick按钮if $(“input [name ='location'])。val()。length&gt; 0 ...如果长度大于0 ,它将忽略该请求(并在服务器端节省您的一些努力),普通用户将不会触摸它,因为该字段将被隐藏,并且将无法填写它。但是如果他们只是使用可用的POST功能,那么客户端验证仍然会失败,然后您还必须通过服务器端验证进行备份。
提供客户端垃圾邮件解决方案确实没有万无一失的解决方案......您可以在客户端提供帮助。
编辑:阿切尔提出了一个不错的观点。
我的意思是,用例也很奇怪,但是,您可以使用event.which,在发布帖子之前,确定用户是否点击了按钮(或使用了输入,或者其他),并且只有当他们这样做时它,那么你只能向那个发表评论的特定用户显示他们确实按下/点击提交而不是使用自动化进行提交。但是这会带来奇怪的用法:如果你使用jQuery.append,你只会影响当前会话的视图,除非它通过服务器路由,如果它通过服务器路由,你应该只是在服务器端检查...