需求
对网站访客进行统计并做一定的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)才能查看!
wow,正好有用,我试试
下载下来 试试看
666666666666666666666很好
链接里的安装教程看不懂…..是打包成插件用吗
压缩包里有两个文件,ip2c.php需要在主题function.php里include包含(注意路径),
另一个qqwry.dat是数据库文件,和ip2c.php在同一个目录就可以了
补充一下,需要在 function.php 中增加这句
xiex
补充一下,需要在 function.php 中增加这句哦
include (“ip2c/ip2c.php”);
找了好久,谢谢站长无私分享!
不客气,成功了吗?