为 WordPress 生成网站访问日志
文章目录

对于一个网站来说,分析站点访问日志是非常重要的一件事。但是经常去服务器后台查询网站的访问日志太麻烦,而且很多vps都不带有访问日志这个功能。在这里周良给大家分享一个小技巧,可以为 WordPress 生成网站访问日志,日志内容还是可以自定义的,这样就可以省去每次都要登录主机后台查询。

把下面的代码添加到主题的 function.php 文件中即可:

make_log_file();

function make_log_file() {
    // log 文件名
    $filename = 'mylogs.txt';

    // 去除 rc-ajax 评论以及 cron 机制访问记录
    if (strstr($_SERVER["REQUEST_URI"], "rc-ajax") == false
        && strstr($_SERVER["REQUEST_URI"], "wp-cron.php") == false) {

        $word = date('mdHis', $_SERVER['REQUEST_TIME'] + 3600 * 8) . " ";
        // 访问页面
        $word .= $_SERVER["REQUEST_URI"] . " ";
        // 协议
        $word .= $_SERVER['SERVER_PROTOCOL'] . " ";
        // 方法, POST OR GET
        $word .= $_SERVER['REQUEST_METHOD'] . " ";
        //$word .= $_SERVER['HTTP_ACCEPT'] . " ";
        // 获得浏览器信息
        $word .= getbrowser() . " ";
        // 传递参数
        $word .= "[" . $_SERVER['QUERY_STRING'] . "] ";
        // 跳转地址
        $word .= $_SERVER['HTTP_REFERER'] . " ";
        // 获取IP
        $word .= getIP() . " ";
        $word .= "\n";

        $fh = fopen($filename, "a");
        fwrite($fh, $word);
        fclose($fh);
    }
}

// 获取IP地址,网上现成代码
function getIP() {
    if (getenv('HTTP_CLIENT_IP')) {
        $ip = getenv('HTTP_CLIENT_IP');
    } else if (getenv('HTTP_X_FORWARDED_FOR')) {
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    } else if (getenv('REMOTE_ADDR')) {
        $ip = getenv('REMOTE_ADDR');
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

// 获取浏览器信息,移动端,平板电脑数据还未加上。
function getbrowser() {
    $Agent = $_SERVER['HTTP_USER_AGENT'];
    $browser = '';
    $browserver = '';

    if (ereg('Mozilla', $Agent) && ereg('Chrome', $Agent)) {
        $temp = explode('(', $Agent);
        $Part = $temp[2];
        $temp = explode('/', $Part);
        $browserver = $temp[1];
        $temp = explode(' ', $browserver);
        $browserver = $temp[0];
        $browser = 'Chrome';
    }

    if (ereg('Mozilla', $Agent) && ereg('Firefox', $Agent)) {
        $temp = explode('(', $Agent);
        $Part = $temp[1];
        $temp = explode('/', $Part);
        $browserver = $temp[2];
        $temp = explode(' ', $browserver);
        $browserver = $temp[0];
        $browser = 'Firefox';
    }

    if (ereg('Mozilla', $Agent) && ereg('Opera', $Agent)) {
        $temp = explode('(', $Agent);
        $Part = $temp[1];
        $temp = explode(')', $Part);
        $browserver = $temp[1];
        $temp = explode(' ', $browserver);
        $browserver = $temp[2];
        $browser = 'Opera';
    }

    if (ereg('Mozilla', $Agent) && ereg('MSIE', $Agent)) {
        $temp = explode('(', $Agent);
        $Part = $temp[1];
        $temp = explode(';', $Part);
        $Part = $temp[1];
        $temp = explode(' ', $Part);
        $browserver = $temp[2];
        $browser = 'Internet Explorer';
    }

    if ($browser != '') {
        $browseinfo = $browser . ' ' . $browserver;
    } else {
        $browseinfo = $_SERVER['HTTP_USER_AGENT'];
    }
    
    return $browseinfo;
}

ok,在你的站点根目录上就会生成 mylogs.txt 这个文件,通过 https://imzl.com/mylogs.txt 可以直接访问。这样生成的网站日志会比 CNZZ 等第三方统计工具生成的日志精准的多,你可以通过日志得知哪些人访问哪些文件,哪些蜘蛛爬行过了等等信息。