PHP&MySQL实现访客统计功能

PHP&MySQL实现访客统计功能

本文主要实现的功能是将访客的IP地址与访问时间记录存入数据库,并通过新浪IP地址查询接口,记录访客IP所在地。

记录IP

建立函数

$link=new mysqli("localhost","root","","DATABASE_name");
function visitorcount(){
     
    global $link;
    date_default_timezone_set('PRC');//设置时区,否则得到的时间不是北京时间
    $ip=$_SERVER["REMOTE_ADDR"];
    $date=date('Y-m-d H:i:s');
    $location_one= @file_get_contents("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip="."$ip");//这行是新浪IP地址接口使用方法;

//在这儿以$IP="27.192.0.0";做测试;
//执行这一行后返回的内容:var remote_ip_info = //{"ret":1,"start":-1,"end":-1,"country":"\u4e2d\u56fd","province":"\u6c5f\u82cf","city":"\u5357\u4eac","district":"","isp":"","type":"","desc":""};

//"\u4e2d\u56fd、\u6c5f\u82cf、\u5357\u4eac"是经过Unicode编码后的文字,分别代表中国、山东、 潍坊;

//接着使用substr来截取大括号以及括号里的内容,用json_decode来解码

    $location_substr= substr($location_one,20,-1);
    $location=json_decode($location_substr,true);
    $country=$location['country'];
    $province=$location['province'];
    $city=$location['city'];

//然后插入数据库中:

    $sql="insert into visitor values ('{$ip}','{$date}','{$country}','{$province}','{$city}')";
    mysqli_query($link, $sql);
} //该函数到此结束;

通过PHP调用该数据库内容看看效果如何:

$sql="select * from visitor";
$result=mysqli_query($link, $sql);
$row=mysqli_fetch_array($result,$result_type=MYSQLI_ASSOC);
print_r($row);

返回结果是一个数组:Array ( [ip] => 27.192.0.0 [date] => 2016-11-12 02:06:17 [country] => 中国 [province] => 山东 [city] => 潍坊 )

访客数据运用

  • 总访客量统计
  • 本月访客量统计

总访客量统计

总访客量统计比较简单,只需要使用select count统计visitor表中所有行数量就可以实现:

function allviews(){
     
    global $link;
    $sql="select count(*) from visitor";
    $allviews_one=mysqli_query($link, $sql);
    $allviews=mysqli_fetch_array($allviews_one,$allviews_one_type=MYSQLI_ASSOC);
    return $allviews;
}
//输出:
echo allviews()['count(*)'];

本月访客量统计

用date(‘Y-m’)得到当前年月, now201611 sql统计日期大等于2016-11-01 00:00:01,小等于当前时刻的行数,就可以得到本月访客量。

function monthviews(){
     
    global $link;
    $month=date('Y-m');
    $now=date('Y-m-d H:i:s');
    $sql="select count(*) from visitor where date>= '{$month}.-01 00:00:01' and date<= '{$now}'";
    $monthviews_one=mysqli_query($link, $sql);
    $monthviews=mysqli_fetch_array($monthviews_one,$monthviews_one_type=MYSQLI_ASSOC);
    return $monthviews;
}

输出与上面一样:
echo monthviews()[‘count(*)’];

你可能感兴趣的:(php,mysql)