0

这是我想做的:用户一天最多可以评论五次(在代码中我使用 60 秒来更快地查看结果)。但是我似乎做了一个错误的比较,因为现在它总是让我回到真实的状态。因此,即使计数器高于 5,它仍然会计数而不是停在那里(60 秒)。任何输入表示赞赏。下面是我使用的代码。

<?php
$DB_HostName = "";
$DB_Name = "";
$DB_User = "";
$DB_Pass = "";
$DB_Table = "";

$name = mysql_escape_string($_GET['name']);
set_time_limit(0);

$con = mysql_connect($DB_HostName,$DB_User,$DB_Pass) or die (mysql_error()); 
mysql_select_db($DB_Name,$con) or die(mysql_error()); 

 if ($name[CommentCounterReset] === 5) //or if ("CommentCounterReset === 5 WHERE Name = $name)? {
   echo "You already wrote five comments.";
   set_time_limit(60);  
   $sql = "UPDATE table SET CommentCounterReset = CommentCounterReset-5 WHERE Name = '$name'";
}  else {
 $sql = "UPDATE table SET CommentCounterReset = CommentCounterReset+1 WHERE Name = '$name'";
        echo "Comment accepted.";

 }

$res = mysql_query($sql,$con) or die(mysql_error());

   mysql_close($con);
if ($res) {
}else{
}// end else
?>
4

2 回答 2

2

看起来您正在尝试使用以下命令在等待一段时间后运行查询:

 set_time_limit(60);  

这使得脚本的最大运行时间为 60 秒,但实际上并没有做更多的事情。它更改了一个设置,因此您的脚本最多可以运行 1 分钟,但实际上并没有让它运行。

你可以这样做,sleep但你不应该这样做 如果你想这样做一天,这意味着你的脚本将运行一天(它可以,睡眠不“计数”,因为它是一个系统调用)。

最好将某个时间写入您的数据库并进行检查。如果用户想评论你检查

检查用户是否有 5 条评论。

  1. 是的?检查时间
    1.如果是过去,发表评论并重置计数器。
    1. 如果是将来,请不要发表评论。
  2. 不?增加计数器并发表评论
    1. 你把它增加到5了吗?然后将日期设置为 +60 秒(或 +1 天)。
于 2012-09-22T15:43:12.153 回答
0

在这里修正,必须大于等于

if ($name[CommentCounterReset] >= 5)
于 2012-09-22T14:46:03.820 回答