加载中……
WordPress 实现访客计数、IP记录与防控

需求

对网站访客进行统计并做一定的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)才能查看!

版权声明: 若无特殊说明,文章均为原创,版权归本文作者所有,转载请保留出处和此说明!
本文链接: WordPress 实现访客计数、IP记录与防控
本文作者: Jan.

评论

  1. sds
    Windows Chrome
    3周前
    2021-8-28 19:18:39

    来学习一下…

  2. Geronimo
    Windows Chrome
    1月前
    2021-8-19 16:53:33

    找了一圈找到这个,看起来可行,试一试

  3. wuyanzu
    Windows Chrome
    1月前
    2021-8-09 22:23:27

    看看呢

  4. 19311366
    Windows Chrome
    2月前
    2021-7-26 0:19:12

    谢谢分享

  5. ms
    Windows Chrome
    2月前
    2021-7-15 22:39:34

    谢谢分享

  6. 11
    Macintosh Safari
    3月前
    2021-6-17 19:38:24

    牛的牛的

  7. vps
    Windows Chrome
    3月前
    2021-6-13 1:06:51

    谢谢分享

  8. QSG8856
    Windows Firefox
    6月前
    2021-4-06 19:41:07

    教程的连接打不开,请问在function里增加了这个文件路径以后,该怎么操作呢?

    • Jan 博主
      Windows Chrome
      已编辑
      6月前
      2021-4-07 23:37:14

      下载链接?正常的啊,然后就是把代码放在合适的php文件里。num 为总访客量,YourNum 为当前访客编号,adress 为访客 ip。然后输出这三个变量就可以了。比如我在页脚的输出,代码为:

      <?php print "累计"."$num"."位访客,您是第"."$YourNum"."位访客,"." 您的IP是:[ "."$adress"." ]";?>
  9. QSG8856
    Windows Firefox
    6月前
    2021-4-06 19:38:24

    感谢分享

  10. 令狐大哥
    Windows Chrome
    6月前
    2021-4-06 15:58:38

    太感谢了 阿里嘎多

  11. larena
    Windows Chrome
    6月前
    2021-4-06 13:09:01

    学习一下

  12. YuxiangWang_0525
    Android Chrome
    7月前
    2021-3-02 23:05:13

    wow,正好有用,我试试

  13. magic
    Macintosh Safari
    7月前
    2021-2-26 13:30:37

    下载下来 试试看

  14. 大声地
    Windows Chrome
    7月前
    2021-2-13 18:29:49

    666666666666666666666很好

  15. note64
    Windows Chrome
    8月前
    2021-2-04 14:48:39

    链接里的安装教程看不懂…..是打包成插件用吗

    • Jan 博主
      Linux Chrome
      8月前
      2021-2-07 15:48:37

      压缩包里有两个文件,ip2c.php需要在主题function.php里include包含(注意路径),

      include("ip2c/ip2c.php"); //IP归属地和运营商查询功能

      另一个qqwry.dat是数据库文件,和ip2c.php在同一个目录就可以了

  16. Jan 博主
    Linux Chrome
    已编辑
    8月前
    2021-2-04 11:22:23

    补充一下,需要在 function.php 中增加这句

    include("ip2c/ip2c.php");
  17. note64
    Windows Chrome
    8月前
    2021-2-04 11:08:26

    xiex

    • Jan 博主
      Linux Chrome
      已编辑
      8月前
      2021-2-04 11:21:24

      补充一下,需要在 function.php 中增加这句哦
      include (“ip2c/ip2c.php”);

  18. msgina
    Windows Chrome
    8月前
    2021-1-30 22:13:01

    找了好久,谢谢站长无私分享!

    • Jan 博主
      Linux Chrome
      8月前
      2021-2-01 9:38:59

      不客气,成功了吗?

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇