有关php计数器问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 19:10:59
我做了个防刷新的记数器,用的是TIME_TO_SEC函数和ip来防止刷新 但是在同一ip第二天来登的时候就不行了 而且TIME_TO_SEC(NOW())-TIME_TO_SEC(AT_TIME)变成了负数AT_TIME是我定义的

$ip_addr = $_SERVER['REMOTE_ADDR'];//获取用户ip地址
//
$conn=mysql_connect( $mysql_server_name, $mysql_username, $mysql_password);
mysql_select_db($mysql_database,$conn);
//用TIME_TO_SEC( )函数来计算登陆时间差
$sql ="SELECT TIME_TO_SEC( now( ) ) - TIME_TO_SEC( at_time ) FROM `counter` WHERE `ip_addr` ='".$ip_addr."' AND name = 'page1' ORDER BY `TIME_TO_SEC( now( ) ) - TIME_TO_SEC( at_time )` ASC";
$result = mysql_query($sql);
//获取第一笔数据
$row=mysql_fetch_row($result);
$timeout = $row[0];
mysql_close($conn);
//判断是不是灌水 用时间来分开 如果超过时间则插入一个数据
if($timeout>10){
//部分代码

at_time 是什么类型的?

我一般用 oracle,不了解 mysql 里面对时间/日期的处理方式,主要是也不知道你的 at_time 是不是包含日期

建议你

1) 试试 TIME_TO_SEC ( now() - at_time )

2) ORDER BY at_time DESC

如果 TIME_TO_SEC 仅仅能把一天 24 小时之内的时间变成秒数,建议你

select TIME_TO_SEC ( now () - at_time ) from 'counter' where 'ip_addr' = '"$ip_addr"' and name = 'page1' order by at_time
desc

你也不把counter里的时间贴出来,是不是时间的问题啊,不行就转换一下时间!

很好呀,没有问题呀,大概是网络的问题