2012-08-11 81 views
1

基本上这样做是在用户按下按钮后,他们必须等待2分钟才能再次按下。当你第一次按下它时,它会起作用,然后如果在2分钟之前再次按下它,它会显示“请等待2分钟”。但2分钟后,你可以按你喜欢的次数按下它,而不会出现错误,而不是我想要的。下面是代码PHP第一次工作失败

<?php 
if('sub') { 

$client = $_SERVER['REMOTE_ADDR']; 
$username="user"; 
$password="pass"; 
$database="db"; 
mysql_connect(localhost,$username,$password); 
$time = strtotime("2 minutes"); 
$now = strtotime("now"); 
@mysql_select_db($database) or die("Unable to select database"); 
$query = "SELECT Time FROM log WHERE IP='$client'"; 
$result= mysql_query($query); 
$num=mysql_num_rows($result); 


while($rows=mysql_fetch_array($result)){ 
$timestamp = $rows['Time']; 
} 
echo n; 
echo $now; 
echo t; 
echo $timestamp; 


if($now < $timestamp) 
{ 
echo "<center><h2 style=\"color:red\" class=\"texts\" id=\"homeLink\">Please wait 2 minutes.</h2></center>"; 

} 
else{ 
//some other code 

$query1 = "INSERT INTO log VALUES ('$client','$time','$username')"; 
$query2 = "UPDATE `log` SET `Time`='$time' SET `Username`='$username' WHERE `IP`='$client'"; 

if($num == 0) 
{ 
mysql_query($query1); 
} 
else 
{ 
mysql_query($query2); 
} 

mysql_close(); 
} 
?> 

正如你可以看到,如果有用户的IP没有行,它使一个新的,如果有,它会更新它。第一次后,它不再有效。希望有人能帮忙。谢谢!

+0

您可以添加** <?php ini_set('error_reporting',E_ALL); ?> **在你的'.php'脚本的开头显示所有错误。试试看,请。 – 2012-08-11 13:57:59

回答

1

您的更新语句有点偏离,所以更新失败;

UPDATE `log` SET `Time`='$time' SET `Username`='$username' WHERE `IP`='$client'" 

您应该只使用SET一次,就像这样;

UPDATE `log` SET `Time`='$time', `Username`='$username' WHERE `IP`='$client'" 
+0

它的工作!非常感谢! – user1307079 2012-08-11 14:15:12

0

我很确定你的数据库不包含你认为它包含的条目。你可以检查它(按钮按下后的IP和东西)?

+0

是的,它确实包含条目,我已检查。我会尝试更改更新语句。 – user1307079 2012-08-11 14:09:49

+0

但是如果只有一个时间戳,为什么从数据库中获取数组? – 2012-08-11 14:15:18