要对网站的访问量做计数,我们可以这样做,对于每个访客记下他的IP和时间,当页面加载时获取访问者的IP,从数据库中查询是否已经访问过,如果访问过而且间隔时间小于600秒,则不作计数,否则,计数器加1。
首先创建数据库jh
CTEATE DATABASE jh;
再创建表
CREATE TABLE `counter` (
`visit_ip` varchar(15) NOT NULL,
`visit_time` datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
下面是实现代码
// counter.php
$server_name = "localhost:6033";
$username = "root";
$password = "root";
$database = "jh";
$conn = mysql_connect($server_name, $username, $password);
if ( !$conn )
{
die ("Could not connect server $server_name\n");
exit();
}
//------------------------------------------------
$ip = getenv("REMOTE_ADDR"); // 获得远程访问者地址
$strsql = "SELECT (TO_DAYS(NOW()) - TO_DAYS(`visit_time`))*24*3600+
TIME_TO_SEC(NOW())-TIME_TO_SEC(`visit_time`)
AS dif_sec
FROM counter
WHERE `visit_ip` = '$ip'
ORDER BY dif_sec ASC";
$result = mysql_db_query($database, $strsql, $conn)
or die("Query error:".mysql_error());
$row = mysql_fetch_row($result);
// 对访问者进行过滤,防止灌水
// 只有两种情况计数器才加1,
// 一个是当前访问者ip不存在,即$row为false
// 一个是访问者ip存在, 但查询的结果大于600秒,
// 即同一个ip上次访问的时间距离现在的时间间隔大于600秒
$AddCnt = false;
if ($row)
{
if ( $row[0] > 600 )
$AddCnt = true;
}
else
$AddCnt = true;
if ($AddCnt)
{
$strsql = "INSERT INTO `counter` ( `visit_ip` , `visit_time` )
VALUES ('$ip', NOW( ))";
$result = mysql_db_query($database, $strsql, $conn);
}
//------------------------------------------------------
$strsql = "SELECT COUNT(*) FROM `counter` ";
$result = mysql_db_query($database, $strsql, $conn);
$row = mysql_fetch_row($result);
print "
开站至今,共有 $row[0] 人访问本站.
";
mysql_close($conn);
?>
阅读(779) | 评论(0) | 转发(0) |