博客开启了统计功能 -自主开发很水的IP访客统计

以前一直用百度统计,发现不能很好的突出博客被访问的次数。(PS:不适合装13)

昨天本来打算下一个统计插件算了,省的麻烦,发现wordpress插件很多都是国外的,对于生活在大中华局域网里面的chinese来说。你们懂得。我就不说太细了。先说重点。突出主题嘛!

先说说统计目的

记录访客的IP,访客的游览器信息,访问时间和次数。

重点:

  1. 对新来的访客,进行数据插入数据。
  2. 对于以前留过脚印的访客,更新访客次数字段更新。

[php]

//数据入库

private function save()
{

if($this->pr())
{

$this->getData();

$sql = "select id from dwz_tong where ip='{$this->ip}’ and view='{$this->view}’";

$query = mysql_query($sql);

//获得数据可以数据的条数
$num = mysql_num_rows($query);

$time = time();

if($num == 0)
{

//新访客
$vie = "insert into dwz_tong(ip,view,count,time) values(‘{$this->ip}’,'{$this->view}’,1,’$time’)";
}

else
{
//老访客
$vie = "update dwz_tong set count=count+1,time='{$time}’ where ip='{$this->ip}’ and view='{$this->view}’";
}

$_SESSION["time"] = time();
mysql_query($vie);
}
}
//获取访问者数据
private function getData()
{

//获取用户IP
$this->ip = $this->getIp();
//获取用户游览器信息
$this->view = sha1($_SERVER[‘HTTP_USER_AGENT’]);
}
[/php]


上面这个部分代码就是统计的核心所在,解析来就是防止重复刷新

[php]

//设置ssession超时,有两种方式

//如果你没有设置,默认是一关游览器就删除了。

//session.gc_maxlifetime:这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除!

//但这个要在php_ini中设置,通过ini_set()函数来修改这一参数.不算很方便,所以我把session的值设置time

$now = time();

$time = $_session["time"];

$max = 3*60*60 //设置session超时为三个小时;

return $now-$time>$max?0:1 //这样就体现出来设置session的巧妙姓了。

[/php]
[php]
//防止重复提交
private function pr()
{

if(!isset($_SESSION["time"]) || empty($_SESSION))
{
return 1;
}else
{
return 0;
}
}
[/php]

基本重点的部分都已经完成了,附件一个获得IP的方式

[php]

//获取ip
private function getIp()
{
if (getenv("HTTP_CLIENT_IP") &getenv("HTTP_CLIENT_IP")& strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER[‘REMOTE_ADDR’]) && $_SERVER[‘REMOTE_ADDR’] && strcasecmp($_SERVER[‘REMOTE_ADDR’], "unknown"))
$ip = $_SERVER[‘REMOTE_ADDR’];
else
$ip = "unknown";
return $ip;
}
[/php]

上面这个方式是通过环境变量来获取访客的IP,比较准确。

一个很水的统计方式就这么分别的完成了。再这么调用,我就不多了,我把所以源码都共享了。还有都就到群里去问

源码下载:下载地址

发表评论

电子邮件地址不会被公开。 必填项已用*标注