Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1592001
  • 博文数量: 441
  • 博客积分: 20087
  • 博客等级: 上将
  • 技术积分: 3562
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-19 15:35
文章分类

全部博文(441)

文章存档

2014年(1)

2012年(1)

2011年(8)

2010年(16)

2009年(15)

2008年(152)

2007年(178)

2006年(70)

分类:

2007-04-11 00:07:49

要对网站的访问量做计数,我们可以这样做,对于每个访客记下他的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);
 ?>
阅读(756) | 评论(0) | 转发(0) |
0

上一篇:php简单计数器

下一篇:php图形计数器

给主人留下些什么吧!~~