需求
对网站访客进行统计并做一定的IP监控手段。
完成内容
部分代码
function get_locate($ip) { if(empty($ip)) $ip = get_comment_author_IP(); $ch = curl_init(); $timeout = 5; curl_setopt ($ch, CURLOPT_URL, 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip);//淘宝IP API curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $file_contents = curl_exec($ch); curl_close($ch); $result = json_decode($file_contents,true); if ($result['data']['country'] != '中国') { return $result['data']['country']; } else { return $result['data']['country'].' '.$result['data']['region'].' '.$result['data']['city'].' '.$result['data']['isp']; } } /*打开文件用于记录访问量,如果文件不存在自动创建*/ $counterFile = "somefile1.txt"; $fp = fopen($counterFile,"a+"); /*获取IP*/ $adress=$_SERVER["REMOTE_ADDR"]; /*统计访问量*/ $num = fgets($fp,6); if (isset($_COOKIE['GuestCookie'])) { fclose($fp); $YourNum = $_COOKIE['GuestCookie']; if (!isset($_COOKIE['forbidden'])) { $forbidden_cnt = 1; setcookie('forbidden', "what ever", time()+10, COOKIEPATH, COOKIE_DOMAIN, false); } if (isset($_COOKIE['forbidden'])){ $forbidden_cnt++; if($forbidden_cnt >= 20){ //Apache服务器过滤,非Apache可不用 $fpp=fopen(".htaccess","a");//追加方式打开 fwrite($fpp, "deny from $adress"); fclose($fpp); //防火墙规则过滤,万能 $ret=shell_exec("iptables -t filter -I INPUT -s $adress -j DROP > /dev/null 2>&1"); } } } else { $num += 1; $YourNum = $num; setcookie('GuestCookie', $num, time()+3600*24, COOKIEPATH, COOKIE_DOMAIN, false); /*关闭文件,重新以只写的方式打开*/ fclose($fp); $fp=fopen($counterFile,"w"); /*更新变量$fp的值*/ fwrite($fp, $num); fclose($fp); $IPFile = "somefile2.txt"; /*以追加方式打开文件*/ $fp = fopen($IPFile,"a"); $online_ipdate = get_locate($adress); if($online_ipdate) { fwrite($fp, $adress); fwrite($fp, "\t"); fwrite($fp, $online_ipdate); fwrite($fp, "\t"); fwrite($fp, ":online");//联网查询方式 } else{ $local_ipdata=convertip($adress); fwrite($fp, $adress); fwrite($fp, "\t"); fwrite($fp, $local_ipdata); fwrite($fp, "\t"); fwrite($fp, ":local");//本地数据库查询方式 } fwrite($fp,"\r\n"); date_default_timezone_set(PRC); fwrite($fp,date("Y-m-d H:i:s")); fwrite($fp,"\r\n"); fwrite($fp,"#-----------------#"); fwrite($fp,"\r\n"); fclose($fp); }
联网查询有次数限制,本地数据库查询需要下载相应的数据库文件,详见下载。
其中num为总访客量,YourNum为当前访客编号,adress为访客ip。
somefile1.txt,somefile2.txt为保存文件,找得到就好。
在适合的位置,比如页脚,进行输出与处理即可。
下载
温馨提示: 此处内容需要您 评论本文(免注册)并刷新(按F5)才能查看!
谢谢
谢谢,学习一下
shi shi
谢谢!
学习一下,谢谢
感谢
感谢
看起来很棒,试一下
谢谢站长
学习一下
找了好久,谢谢站长无私分享!
学习了
下载下来,试试行不行
牛蛙牛蛙,正好自己搞了个博客,需要个统计IP的小东西,这个完美!谢谢!
厉害
来学习一下…
找了一圈找到这个,看起来可行,试一试
看看呢
谢谢分享
谢谢分享
牛的牛的
谢谢分享
教程的连接打不开,请问在function里增加了这个文件路径以后,该怎么操作呢?
下载链接?正常的啊,然后就是把代码放在合适的php文件里。num 为总访客量,YourNum 为当前访客编号,adress 为访客 ip。然后输出这三个变量就可以了。比如我在页脚的输出,代码为:
感谢分享
太感谢了 阿里嘎多
学习一下
wow,正好有用,我试试
下载下来 试试看
666666666666666666666很好
链接里的安装教程看不懂…..是打包成插件用吗
压缩包里有两个文件,ip2c.php需要在主题function.php里include包含(注意路径),
另一个qqwry.dat是数据库文件,和ip2c.php在同一个目录就可以了
补充一下,需要在 function.php 中增加这句
xiex
补充一下,需要在 function.php 中增加这句哦
include (“ip2c/ip2c.php”);
找了好久,谢谢站长无私分享!
不客气,成功了吗?