PHP记录用户访问ip、浏览器类型和访问时间到txt日志文件

8204

blob.png

<div style="width:800px;margin:auto">
            <table class="table table-hover">
                <thead>
                    <tr>
                        <th>#</th>
                        <th>时间</th>
                        <th>IP</th>
                        <th>浏览器</th>
                    </tr>
                </thead>
                <tbody>
                    <?php
                    $i = 1;
                    foreach ($loglist as & $val) {
                        ?>
                        <tr>
                            <th scope="row"><?php echo $i; ?></th>
                            <td><?php echo $val['logtime']; ?></td>
                            <td><?php echo $val['msg']['ip']; ?></td>
                            <td><?php echo $val['msg']['user']; ?></td>
                        </tr>
                        <?php $i++;
                    } ?>
                </tbody>
            </table>
        </div>
Log.class.php
<?php 
/*
 * 日志记录
 * 每天生成一个日志文件,当文件超过指定大小则备份日志文件并重新生成新的日志文件
 *
*/
class Log {
private $maxsize = 1024000; //最大文件大小1M
//写入日志
public function writeLog($filename,$msg){
$res = array();
$res['msg'] = $msg;
$res['logtime'] = date("Y-m-d H:i:s",time());
//如果日志文件超过了指定大小则备份日志文件
if(file_exists($filename) && (abs(filesize($filename)) > $this->maxsize)){
$newfilename = dirname($filename).'/'.time().'-'.basename($filename);
rename($filename, $newfilename);
}
//如果是新建的日志文件,去掉内容中的第一个字符逗号
if(file_exists($filename) && abs(filesize($filename))>0){
$content = ",".json_encode($res);
}else{
$content = json_encode($res);
}
//往日志文件内容后面追加日志内容
    file_put_contents($filename, $content, FILE_APPEND);
}
//读取日志
public function readLog($filename){
if(file_exists($filename)){
$content = file_get_contents($filename);
$json = json_decode('['.$content.']',true);
}else{
$json = '{"msg":"The file does not exist."}';
}
return $json;
}
}
 ?>
index.php
<?php
require_once('Log.class.php');
$filename = "logs/log_" . date("Ymd", time()) . ".txt";
$msg = array(
    'ip' => $_SERVER["REMOTE_ADDR"],
    'user' => getBrowser()
);
$Log = new Log();
$Log->writeLog($filename, $msg);
$loglist = $Log->readLog($filename);
//获取浏览器类型
function getBrowser() {
    $user_OSagent = $_SERVER['HTTP_USER_AGENT'];
    if (strpos($user_OSagent, "Maxthon") && strpos($user_OSagent, "MSIE")) {
        $visitor_browser = "Maxthon(Microsoft IE)";
    } elseif (strpos($user_OSagent, "Maxthon 2.0")) {
        $visitor_browser = "Maxthon 2.0";
    } elseif (strpos($user_OSagent, "Maxthon")) {
        $visitor_browser = "Maxthon";
    } elseif (strpos($user_OSagent, "Edge")) {
        $visitor_browser = "Edge";
    } elseif (strpos($user_OSagent, "Trident")) {
        $visitor_browser = "IE";
    } elseif (strpos($user_OSagent, "MSIE")) {
        $visitor_browser = "IE";
    } elseif (strpos($user_OSagent, "MSIE")) {
        $visitor_browser = "MSIE 较高版本";
    } elseif (strpos($user_OSagent, "NetCaptor")) {
        $visitor_browser = "NetCaptor";
    } elseif (strpos($user_OSagent, "Netscape")) {
        $visitor_browser = "Netscape";
    } elseif (strpos($user_OSagent, "Chrome")) {
        $visitor_browser = "Chrome";
    } elseif (strpos($user_OSagent, "Lynx")) {
        $visitor_browser = "Lynx";
    } elseif (strpos($user_OSagent, "Opera")) {
        $visitor_browser = "Opera";
    } elseif (strpos($user_OSagent, "MicroMessenger")) {
        $visitor_browser = "微信浏览器";
    } elseif (strpos($user_OSagent, "Konqueror")) {
        $visitor_browser = "Konqueror";
    } elseif (strpos($user_OSagent, "Mozilla/5.0")) {
        $visitor_browser = "Mozilla";
    } elseif (strpos($user_OSagent, "Firefox")) {
        $visitor_browser = "Firefox";
    } elseif (strpos($user_OSagent, "U")) {
        $visitor_browser = "Firefox";
    } else {
        $visitor_browser = "其它";
    }
    return $visitor_browser;
}
?>