回 帖 发 新 帖 刷新版面

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

我希望同一个 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 "数据更新成功";
       [b] foreach($_POST as $i=>$v) {
        $updateCommand="UPDATE votemain SET vote_count$v = vote_count$v + 1 where vote_id=$i";
        mysql_query($updateCommand);  
                                   }[/b]        
            }
            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 "数据插入成功";
   [b] foreach($_POST as $i=>$v) {
    $updateCommand="UPDATE votemain SET vote_count$v = vote_count$v + 1 where vote_id=$i";
    mysql_query($updateCommand);  
                            }[/b]        }
        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);


?>[em8]

回复列表 (共1个回复)

沙发

$diftime=(strtotime($time)-strtotime($s_time))/60
$diftime=(strtotime($time)-strtotime($s_time))/3600

我来回复

您尚未登录,请登录后再回复。点此登录或注册