javascript - Captcha popup if user comments too fast? -
i'm working on chat app meteor , i'm assuming spam issue want incorporate captcha pops if comment (like more 3 times in 5 seconds). have javascript code below have no idea how this. possible have captcha pop somewhere on screen? if so, know how this? here code chat app part:
javascript:
// render of our messages in ui template.chatbox.helpers({ "messages": function() { return chatcollection.find(); } }); // value handlerbar helper user template.chatmessage.helpers({ "user": function() { if(this.userid == 'me') { return this.userid; } else if(this.userid) { getusername(this.userid); return session.get('user-' + this.userid); } else { return 'anonymous-' + this.subscriptionid; } } }); // when send chat clicked @ message collection template.chatbox.events({ "click #send": function() { if (meteor.user() == null) { alert("you must login post"); return; } $('#messages').animate({"scrolltop": $('#messages')[0].scrollheight}, "fast"); var message = $('#chat-message').val(); chatcollection.insert({ userid: 'me', message: message }); $('#chat-message').val(''); //add message stream chatstream.emit('chat', message); }, "keypress #chat-message": function(e) { if (meteor.user() == null) { alert("you must login post"); return; } if (e.which == 13) { $('#messages').animate({"scrolltop": $('#messages')[0].scrollheight}, "fast"); console.log("you pressed enter"); e.preventdefault(); //repeat function #send click event here var message = $('#chat-message').val(); chatcollection.insert({ userid: 'me', message: message }); $('#chat-message').val(''); //add message stream chatstream.emit('chat', message); } } }); chatstream.on('chat', function(message) { chatcollection.insert({ userid: this.userid, subscriptionid: this.subscriptionid, message: message }); });
i have added code code. never use meteor don't know whether code work or not in meteor. test creating similes project here
template.chatbox.events({ "click #send": function() { if (meteor.user() == null) { alert("you must login post"); return; } //validation var bot =check_bots(); if(bot==false) { $('#messages').animate({"scrolltop": $('#messages')[0].scrollheight}, "fast"); var message = $('#chat-message').val(); chatcollection.insert({ userid: 'me', message: message }); $('#chat-message').val(''); //add message stream chatstream.emit('chat', message); } else { // whatever want when bot detected } }, "keypress #chat-message": function(e) { if (meteor.user() == null) { alert("you must login post"); return; } if (e.which == 13) { $('#messages').animate({"scrolltop": $('#messages')[0].scrollheight}, "fast"); console.log("you pressed enter"); e.preventdefault(); //repeat function #send click event here var message = $('#chat-message').val(); chatcollection.insert({ userid: 'me', message: message }); $('#chat-message').val(''); //add message stream chatstream.emit('chat', message); } } }); here validation codes
<script type="text/javascript"> var lastintime=0; var defference=0; var msg_count=0; function check_bots() { var seconds = new date().gettime() / 1000; seconds=parseint(seconds); if(lastintime < seconds) { defference = seconds -lastintime; lastintime=seconds; if(defference<=5 && msg_count>=3) { return true; } else { return false; } } } </script>
Comments
Post a Comment