主题:小妹紧急求助!提交时间限制问题
我希望同一个 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]
当用户提交表单后,系统会将用户提交表单的时间做为变量获取,与数据库中存储的同一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]