2013-07-01 58 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.' 
}