防止查询插入垃圾邮件
Prevent query insert spam
我有一个评论系统,用户可以在其中 post 他们对某些事情的看法,但是如果您按“Post!”多次按钮,多个查询被插入到数据库中,结果是垃圾邮件。
这是我的代码:
if(!empty($_POST["artcomment"])) {
$postComment = $DB->real_escape_string($_POST["artcomment"]);
$poster = $dbuser;
$postDate = date("Y-m-d H:i:s");
$attachId = $id;
$prepareComment = $DB->prepare("INSERT INTO article_comments (attach_id, comment, poster, date) VALUES ('".$attachId."', '".$postComment."', '".$poster."', '".$postDate."')");
$addComment = $prepareComment->execute();
}
现在我想知道是否可以设置 60 秒的时间限制,就好像他们 运行 查询一次(单独!)你必须等待 60 秒才能再次执行查询。我看过 set_time_limit()
,但我不完全确定它是如何工作的。
您可以将上次查询的时间戳存储到会话中,然后在收到新请求时进行比较。
session_start();
$limit = 60;
$reqEpoch = time();
$ts = (isset($_SESSION['ts'])) ? $_SESSION['ts'] : $reqEpoch;
if ($ts < $reqEpoch - $limit) {
// run query
$_SESSION['ts'] = time();
}
我有一个评论系统,用户可以在其中 post 他们对某些事情的看法,但是如果您按“Post!”多次按钮,多个查询被插入到数据库中,结果是垃圾邮件。
这是我的代码:
if(!empty($_POST["artcomment"])) {
$postComment = $DB->real_escape_string($_POST["artcomment"]);
$poster = $dbuser;
$postDate = date("Y-m-d H:i:s");
$attachId = $id;
$prepareComment = $DB->prepare("INSERT INTO article_comments (attach_id, comment, poster, date) VALUES ('".$attachId."', '".$postComment."', '".$poster."', '".$postDate."')");
$addComment = $prepareComment->execute();
}
现在我想知道是否可以设置 60 秒的时间限制,就好像他们 运行 查询一次(单独!)你必须等待 60 秒才能再次执行查询。我看过 set_time_limit()
,但我不完全确定它是如何工作的。
您可以将上次查询的时间戳存储到会话中,然后在收到新请求时进行比较。
session_start();
$limit = 60;
$reqEpoch = time();
$ts = (isset($_SESSION['ts'])) ? $_SESSION['ts'] : $reqEpoch;
if ($ts < $reqEpoch - $limit) {
// run query
$_SESSION['ts'] = time();
}