0

どうすればいいのかよくわかりませんが、基本的には、ユーザーが再度投稿できるようになるまで30秒待たせようとしています..

ここに私のコードがあり、それはかなり自明です。

$plus30secs = time() + 30;

if($db->rows("SELECT null FROM comments WHERE userid = '1' AND time > " . $plus30secs . "") == 0) {
    $db->query("INSERT INTO comments (userid, content, time) VALUES ('1' ,'hi..' ,'" . time() . "')");
} else {
    echo 'wait atleast 30 seconds between posting.
}

高度なすべての助けに感謝します。

4

3 に答える 3

0

index.php

<?php
session_start();
$_SESSION['upd']=time();
?>
<form action="om.php" method="post">
</form>

om.php

session_start();
    if(time()-$_SESSION['upd']>30){
        //mysql_query();
        echo 'query run';
    }

javascript-timers を使用して Ajax リクエストを送信することもできます

于 2013-07-01T10:15:45.547 に答える
0

誰かが未来にタイムトラベルしてコメントを投稿できない限り、select は決して行を返すべきではありません。次のようにコードを変更します。

$rows=$db->rows("SELECT time FROM comments WHERE userid = '1' order by time desc limit 1");
if(!count($rows) || $rows[1]['time'] + 30 < time()) {
    $db->query("INSERT INTO comments (userid, content, time) VALUES ('1' ,'hi..' ,'" . time() . "')");
} else {
    echo 'wait atleast 30 seconds between posting.'
}
于 2013-07-01T10:44:34.050 に答える
0

投稿者の IP アドレスは常に保持する必要があります。

とにかく、「plus30secs」ではなく「minus30secs」で確認したほうがいいと思います。

于 2013-07-01T10:28:27.527 に答える