0

ユーザーが特定のことについて考えていることを投稿できるコメントシステムを手に入れましたが、「投稿!」を押すと、ボタンを複数回押すと、複数のクエリがデータベースに挿入され、結果はスパムになります。

これは私のコードです:

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 秒の時間制限を設定できるかどうか疑問に思っています。たとえば、クエリを 1 回 (個別に!) 実行した場合、クエリを再度実行する前に 60 秒待たなければならないからです。私は見てきましたが、set_time_limit()それがどのように機能するのか完全にはわかりません。

4

1 に答える 1

0

最後のクエリのタイムスタンプをセッションに保存し、新しいリクエストを取得したときに比較できます。

session_start();
$limit = 60;
$reqEpoch = time();
$ts = (isset($_SESSION['ts'])) ? $_SESSION['ts'] : $reqEpoch;

if ($ts < $reqEpoch - $limit) {
    // run query

    $_SESSION['ts'] = time();
}
于 2015-08-23T08:58:43.340 に答える