小妹紧急求助!提交时间限制问题

小妹紧急求助!提交时间限制问题

我希望同一个 IP地址的用户重复提交限制时间为90分钟。我的时间限制代码是写在表单提交后,统计数据的页面中。
当用户提交表单后,系统会将用户提交表单的时间做为变量获取,与数据库中存储的同一ip地址的提交时间做比较,如果限制的时间未到则不会将时间写入,且不进行统计。如果过了规定的时间,则会将数据库中原有的提交时间更新。如果是新的ip地址,则插入新的ip和提交时间。

问题一:时间限制有了,但为什么无论是否在时间限制的范围内,用户提交的时间都会写入数据库。而且会将前面几次的提交时间都更新为最后一次时间。

问题二:使用了时间限制后,该页面就无法实现统计运算了。未加之前是好的。

我记录提交时间的表名为t_limit,字段名为s_ip(记录提交的用户IP),s_time(记录提交时间)


粗体字为原计算的代码
<?php require_once('Connections/test.php');
mysql_select_db($database_test, $test) or die("不能连接数据库");
  $ip=getenv("REMOTE_ADDR");//用户ip
  $time=date("Y-m-d H:i:s");//当前时间
  $sql="select * from `t_limit` where s_ip='".$ip."'";
$rs=mysql_query($sql);
if(mysql_num_rows($rs)>0)//如果库中存在用户
    {
     $s_time=mysql_result($rs,0,"s_time");//取出入库时间
     $diftime=(strtotime($time)-strtotime($s_time))/60;//求取相差时间
     if($diftime>=1)
        {
        $up_sql="update t_limit  set s_time='".$time."'  where s_ip='".$ip."'";
        if(mysql_query($up_sql))
            {
        print "数据更新成功";
        foreach($_POST as $i=>$v) {
        $updateCommand="UPDATE votemain SET vote_count$v = vote_count$v + 1 where vote_id=$i";
        mysql_query($updateCommand);  
                                   }        
      
      }
            else
            {
                 print "数据更新失败";
            }
    }
  else
    {
      print "时间未到,不能提交距离现在相差".sprintf("%0.2f",$diftime)."分";
    }
    }
  else
  {
   
    $in_sql="insert into t_limit(`s_time`,`s_ip`) values ('$time','$ip')";
   if(mysql_query($in_sql))
     {
    print "数据插入成功";
    foreach($_POST as $i=>$v) {
    $updateCommand="UPDATE votemain SET vote_count$v = vote_count$v + 1 where vote_id=$i";
    mysql_query($updateCommand);  
                            }   

   }
        else
      {
             print "数据插入失败".mysql_error();
      }
}
        mysql_select_db($database_test, $test);
        $query_Recordset1 = "SELECT * FROM votemain";
        $Recordset1 = mysql_query($query_Recordset1, $test) or die(mysql_error());
        $row_Recordset1 = mysql_fetch_assoc($Recordset1);
        $totalRows_Recordset1 = mysql_num_rows($Recordset1);
        mysql_free_result($Recordset1);


?>

解决思路

先从最基本的开始,检查你的$diftime=(strtotime($time)-strtotime($s_time))/60
是否能够产生判决条件
如果能生成,就说明是if里面的语句出了错,
把代码分块检查,
无论是否在时间限制的范围内,用户提交的时间都会写入数据库。
说明用户提交的时间都会写入数据库的if判断语句条件一直为真,检查if判断条件

谢谢,还是有问题!

我查过了,网页只能显示数据更新成功,或者是时间未到还差。。。。秒。即使是我将数据库中所有提交时间删除,显示的还是数据更新成功,而不是数据插入成功。
还有如果网页能显示数据更新成功,但为什么就不能执行在它后面的统计命令呢?


谢谢斑竹!

还是检查

说明mysql_num_rows($rs)>0这个条件始终为真,就检查一下这个条件到底结果是什么,
用echo吧
还有如果网页能显示数据更新成功,但为什么就不能执行在它后面的统计命令呢?

那应该就是后面的统计命令语法可能是错的,在仔细检查看

由于你的 s_time 类型为int 所以出错