我有一个非常基本的 PHP 聊天系统。 post 唯一要做的就是在 log.html 中添加一行包含 $user 和 $message 的内容。
但用户可以通过按住回车或多次按回车来发送垃圾邮件。这会导致网站滞后。
我想制作一个大约 0.3 秒的冷却系统。 如果处于冷却状态,0.3 秒内不要让用户发布或禁用输入。
我怎样才能做到这一点?
这里是我的代码:
index.php 包含 2 个内容。 “log.html”和这些代码
<form name="message" action="">
<div class="input-group dropup" id="bottom">
<input type="usermsg" type="text" id="usermsg" maxlength="65" autocomplete="off" class="form-control" placeholder="Type your message here.">
<span class="input-group-btn">
<button class="btn btn-success" type="submit" name"submitmsg" id="submitmsg">Send</button>
</span>
</div>
</form>
post.php 包含这些代码
<?
session_start();
if(isset($_SESSION['name'])){
$text = $_POST['text'];
$sp = fopen("player_log.html", 'a');
fwrite($sp, "<div class='msgln'>[" .date("Y-m-d"). "-".date("g:i A"). " | " .$_SERVER['REMOTE_ADDR']."] <b>".$_SESSION['name']."</b>: ".stripslashes(htmlspecialchars($text))."<br></div>");
fclose($sp);
// SOME str_replace CODES FOR EMOTICONS, BANNED TEXTS ETC..
$fp = fopen("log.html", 'a');
fwrite($fp, "<div class='msgln' style='color: #BDBDBD;'><b style='color: #FFBF00;'>[Player] ".$_SESSION['name'].":</b> ".$finaltext."<br></div>");
fclose($fp);
}
?>
最佳答案
您可以尝试在 JavaScript 中使用 setTimeout() 函数。当按下回车键时,禁止用户输入另一条消息(我无法评论如何执行此操作,因为您没有发布任何代码)。然后使用 setTimeout() 函数在 x 秒后启用输入(下面显示 3 秒后的警报):
setTimeout(function(){
alert("Hello");
}, 3000);
如果您需要更多帮助,请详细说明您的问题并向我们展示一些代码。
阅读完您发布的代码后,可能值得按照其他人的建议进行操作 - 检查内容是否为空并且不要发布它。然而,这仍然无法阻止用户用一封信回复发送垃圾邮件。如果您希望用户快速输入消息并发布消息,我相信超时效果最好。如果您只想阻止用户按住 Enter 键,那么检查空消息可能会更好。最好的解决方案(在我看来)是同时使用这两种技术,因为它可以阻止用户快速发送垃圾邮件并阻止用户只是输入空白消息。
关于php - PHP 中发布的冷却时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32376781/