2013-07-01 56 views
0

我真的不知道如何去了解這一點,但基本上我只是試圖讓用戶等待30秒之前,他可以再次發佈..PHP/MySQL的等待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. 
} 

謝謝你在高級的所有幫助。

+1

哪些錯誤與您的解決方案? :) – Bjorn

+0

只是不工作,它應該的方式。 – Jayden

回答

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的定時器發送的Ajax請求

+0

不太好,如果一個機器人改變了重置它的ssid,他可以每30秒發佈一條消息。 – Uman

0

你應該始終保持海報的IP地址。

無論如何,我認爲你應該檢查「minus30secs」,而不是「plus30secs」。

0

除非有人能夠將時間帶到未來並發表評論,否則您的選擇不應該返回連續行。 我會修改這樣的代碼:

$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.' 
}