前言:最近想记录主页和博客主页来访者的信息,于是开始在网上学习 php 基本语法,并借鉴其他人的代码。
主要功能:1、记录来访者的请求时间($_SERVER[‘REQUEST_TIME’])。
2、分析$_SERVER[‘HTTP_USER_AGENT’]请求头信息。
3、将信息分类写入数据库。
4、单独页面读取数据库,并显示出来。
分析信息并写入数据库
<?php //连接数据库 $conn=mysqli_connect("localhost","weask_win","123456789lt","weask_win"); if(!$conn){ die("链接失败".mysqli_errno()); } //设置数据库编码方式 mysqli_query($conn,"set names utf8") or die(mysqli_errno()); //选择数据库 //mysql_select_db("weask_win",$conn) or die(mysql_errno()); //$adress=$_SERVER["REMOTE_ADDR"]; $time=date('Y-m-d H:i:s',$_SERVER['REQUEST_TIME']); $user_agent=$_SERVER['HTTP_USER_AGENT']; $user_os=Get_Os(); $USER_IP=Get_Ip_Addr(); $brower=Get_Browser1(); $b_language=Get_Lang(); $ip_addr=Get_Ip_From_126($USER_IP); //print_r($ip_addr); $addr=Get_Ip_country($ip_addr).Get_Ip_xcountry($ip_addr); //$t=mb_strlen($user_agent,'UTF8'); //echo"$t"; //echo"IP:"."$adress"." 时间:"."$time"." 操作系统:"."$user_os"." User_Agent:"."$user_agent"."$brower"."$b_language"."$addr"; $sql="insert into wp_count(ip,time,user_os,brower,b_language,addr,user_agent) values('$USER_IP','$time','$user_os','$brower','$b_language','$addr','$user_agent')"; mysqli_query($conn,$sql); //将本次访客的 ip 地址添加到数据库中 /* $sql="select times from index_count where ip='$adress'"; $res=mysqli_query($conn,$sql); if(!$row=mysqli_fetch_row($res)){ $sql="insert into index_count(ip, times) values('$adress','1')"; }else{ $times = $row['0']+1; $sql="update index_count set times='$times' where ip='$adress'"; } $res=mysqli_query($conn,$sql); //发送语句获取总数 $sql="select count(ip) from index_count"; $res=mysqli_query($conn,$sql); if($row=mysqli_fetch_row($res)){ $num=$row['0']; } */ //echo"您是第 "."$num"." 位访客"."您的 ip 地址是"."$adress"; mysqli_close($conn); function Get_Ip_country($ip_addr){ if(empty($ip_addr)){return $ip_addr;} preg_match('/var lo="(.*?)", lc/',$ip_addr,$ip_country); if(empty($ip_country[1])){return 'ERROR';} else{return $ip_country[1];} } function Get_Ip_xcountry($ip_addr){ if(empty($ip_addr)){return $ip_addr;} preg_match('/lc="(.*?)";/',$ip_addr,$ip_xcountry); if(empty($ip_xcountry[1])){return 'ERROR';} else{return $ip_xcountry[1];} } function Get_Browser1() { $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, "CriOS")) { $visitor_browser = "CriOS"; } elseif (strpos($user_OSagent, "Safari")) { $visitor_browser = "Safari"; } else { $visitor_browser = "其它"; } return $visitor_browser; } ////获得访客浏览器语言 function Get_Lang(){ if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])){ $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; $lang = substr($lang,0,5); if(preg_match("/zh-cn/i",$lang)){ $lang = "简体中文"; } elseif(preg_match("/zh/i",$lang)){ $lang = "繁体中文"; } else{ $lang = "English"; } return $lang; } else{ return "unknow"; } } ////获得访客真实 ip function Get_Ip_Addr(){ if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; } if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ //获取代理 ip $ips = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); } if($ip){ $ips = array_unshift($ips,$ip); } $count = count($ips); for($i=0;$i<$count;$i++){ if(!preg_match("/^(10|172\.16|192\.168)\./i",$ips[$i])){//排除局域网 ip $ip = $ips[$i]; break; } } $tip = empty($_SERVER['REMOTE_ADDR']) ? $ip : $_SERVER['REMOTE_ADDR']; if($tip=="127.0.0.1"){ //获得本地真实 IP return self::get_onlineip(); } else{ return $tip; } } /* ////根据 ip 获得访客所在地地名--网络不友好,不使用。 function Get_Ip_From_taobao($USER_IP){ if(empty($USER_IP)){ $USER_IP = self::Getip(); } $ip_json=@file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=$USER_IP");//根据 taobao ip $ip_json=json_decode($ip_json); if($ip_json) { return $ip_json; } else { return $ip_json; //return "匹配失败!"; } } */ //根据 ip 获取网络所在地址。 function Get_Ip_From_126($USER_IP){ if(empty($USER_IP)){return 'IP Error';} $ip_json=@file_get_contents("http://ip.ws.126.net/ipquery?ip=$USER_IP"); $encode = mb_detect_encoding($ip_json, array("ASCII","UTF-8","GB2312","GBK","BIG5")); // echo $encode; $ip_json = iconv($encode,"UTF-8//IGNORE",$ip_json); if($ip_json){return $ip_json;} else{return $ip_json;} } function get_os(){ $agent = $_SERVER['HTTP_USER_AGENT']; $os = false; if (preg_match('/win/i', $agent) && strpos($agent, '95')) { $os = 'Windows 95'; } else if (preg_match('/win 9x/i', $agent) && strpos($agent, '4.90')) { $os = 'Windows ME'; } else if (preg_match('/win/i', $agent) && preg_match('/98/i', $agent)) { $os = 'Windows 98'; } else if (preg_match('/win/i', $agent) && preg_match('/nt 6.0/i', $agent)) { $os = 'Windows Vista'; } else if (preg_match('/win/i', $agent) && preg_match('/nt 6.1/i', $agent)) { $os = 'Windows 7'; } else if (preg_match('/win/i', $agent) && preg_match('/nt 6.2/i', $agent)) { $os = 'Windows 8'; }else if(preg_match('/win/i', $agent) && preg_match('/nt 10.0/i', $agent)) { $os = 'Windows 10';#添加 win10 判断 }else if (preg_match('/win/i', $agent) && preg_match('/nt 5.1/i', $agent)) { $os = 'Windows XP'; } else if (preg_match('/win/i', $agent) && preg_match('/nt 5/i', $agent)) { $os = 'Windows 2000'; } else if (preg_match('/win/i', $agent) && preg_match('/nt/i', $agent)) { $os = 'Windows NT'; } else if (preg_match('/win/i', $agent) && preg_match('/32/i', $agent)) { $os = 'Windows 32'; } else if (preg_match('/ipad/i', $agent)) { $os = 'iPad'; } else if (preg_match('/macintosh/i', $agent)) { $os = 'Mac'; } else if (preg_match('/iphone/i', $agent)) { $os = 'iPhone'; } else if (preg_match('/android/i', $agent)) { $os = 'Android'; } else if (preg_match('/linux/i', $agent)) { $os = 'Linux'; } else if (preg_match('/unix/i', $agent)) { $os = 'Unix'; } else if (preg_match('/sun/i', $agent) && preg_match('/os/i', $agent)) { $os = 'SunOS'; } else if (preg_match('/ibm/i', $agent) && preg_match('/os/i', $agent)) { $os = 'IBM OS/2'; } else if (preg_match('/Mac/i', $agent) && preg_match('/PC/i', $agent)) { $os = 'Macintosh'; } else if (preg_match('/PowerPC/i', $agent)) { $os = 'PowerPC'; } else if (preg_match('/AIX/i', $agent)) { $os = 'AIX'; } else if (preg_match('/HPUX/i', $agent)) { $os = 'HPUX'; } else if (preg_match('/NetBSD/i', $agent)) { $os = 'NetBSD'; } else if (preg_match('/BSD/i', $agent)) { $os = 'BSD'; } else if (preg_match('/OSF1/i', $agent)) { $os = 'OSF1'; } else if (preg_match('/IRIX/i', $agent)) { $os = 'IRIX'; } else if (preg_match('/FreeBSD/i', $agent)) { $os = 'FreeBSD'; } else if (preg_match('/teleport/i', $agent)) { $os = 'teleport'; } else if (preg_match('/flashget/i', $agent)) { $os = 'flashget'; } else if (preg_match('/webzip/i', $agent)) { $os = 'webzip'; } else if (preg_match('/offline/i', $agent)) { $os = 'offline'; } else { $os = '未知操作系统'; } return $os; } ?> ?>
读取数据库并界面显示
<?php header("Content-Type: text/html; charset=utf-8");//防止界面乱码 $con=mysqli_connect('localhost','weask_win','123456789lt','weask_win');//数据库用户名,密码 if(!$con){ die('connect failed!'); } mysqli_query($con,"SET NAMES utf8");//解决数据库中有汉字时显示在前台出现乱码问题 $result = mysqli_query($con,"SELECT * FROM wp_count order by id desc"); //print_r(mysql_fetch_array($result));//取得第一条数据 echo (' <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>访问记录日志</title> <meta name="keywords" content="访问记录日志"/> <meta name="description" content="访问记录日志"/> <link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css" /> <link rel="stylesheet" type="text/css" href="../css/common.css" /> </head> <body> <div class="container"> <div class="demo"> <h2 class="title"> <center>访问记录日志</center> </h2> <div style="width:800px;margin:auto"> <table class="table table-hover"> <thead> <tr> <th>ID</th> <th>IP 地址</th> <th>IP 地区</th> <th>OS 操作系统</th> <th>浏览器</th> <th>语言</th> <th>Time 访问时间</th> </tr> </thead> <tbody> '); while($row = mysqli_fetch_array($result))//转成数组,且返回第一条数据,当不是一个对象时候退出 { echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td>" . $row['ip'] . "</td>"; echo "<td>" . $row['addr'] . "</td>"; echo "<td>" . $row['user_os'] . "</td>"; echo "<td>" . $row['brower'] . "</td>"; echo "<td>" . $row['b_language'] . "</td>"; echo "<td>" . $row['time'] . "</td>"; echo "</tr>"; } echo "</tbody></table></div></div></div></body></html>"; mysqli_close($con); ?>