PHP 记录访客的浏览信息方法
可以记录访客的地理位置,操作系统,浏览器,IP,时间和访问的文件。
1.首先创建一个comm_function.php文件:
".$_SERVER['REMOTE_ADDR'];
/**
*获取客户端类型,手机还是电脑,以及相应的操作系统类型。
*
*@paramstring$subject
*/
functionget_os($agent){
$os=false;
if(preg_match('/win/i',$agent)&&strpos($agent,'95')){
$os='Windows95';
}elseif(preg_match('/win9x/i',$agent)&&strpos($agent,'4.90')){
$os='WindowsME';
}elseif(preg_match('/win/i',$agent)&&preg_match('/98/i',$agent)){
$os='Windows98';
}elseif(preg_match('/win/i',$agent)&&preg_match('/nt6.0/i',$agent)){
$os='WindowsVista';
}elseif(preg_match('/win/i',$agent)&&preg_match('/nt6.1/i',$agent)){
$os='Windows7';
}elseif(preg_match('/win/i',$agent)&&preg_match('/nt6.2/i',$agent)){
$os='Windows8';
}elseif(preg_match('/win/i',$agent)&&preg_match('/nt10.0/i',$agent)){
$os='Windows10';//添加win10判断
}elseif(preg_match('/win/i',$agent)&&preg_match('/nt5.1/i',$agent)){
$os='WindowsXP';
}elseif(preg_match('/win/i',$agent)&&preg_match('/nt5/i',$agent)){
$os='Windows2000';
}elseif(preg_match('/win/i',$agent)&&preg_match('/nt/i',$agent)){
$os='WindowsNT';
}elseif(preg_match('/win/i',$agent)&&preg_match('/32/i',$agent)){
$os='Windows32';
}elseif(preg_match('/linux/i',$agent)){
if(preg_match("/Mobile/",$agent)){
if(preg_match("/QQ/i",$agent)){
$os="AndroidQQBrowser";
}else{
$os="AndroidBrowser";
}
}else{
$os='PC-Linux';
}
}elseif(preg_match('/Mac/i',$agent)){
if(preg_match("/Mobile/",$agent)){
if(preg_match("/QQ/i",$agent)){
$os="IPhoneQQBrowser";
}else{
$os="IPhoneBrowser";
}
}else{
$os='MacOSX';
}
}elseif(preg_match('/unix/i',$agent)){
$os='Unix';
}elseif(preg_match('/sun/i',$agent)&&preg_match('/os/i',$agent)){
$os='SunOS';
}elseif(preg_match('/ibm/i',$agent)&&preg_match('/os/i',$agent)){
$os='IBMOS/2';
}elseif(preg_match('/Mac/i',$agent)&&preg_match('/PC/i',$agent)){
$os='Macintosh';
}elseif(preg_match('/PowerPC/i',$agent)){
$os='PowerPC';
}elseif(preg_match('/AIX/i',$agent)){
$os='AIX';
}elseif(preg_match('/HPUX/i',$agent)){
$os='HPUX';
}elseif(preg_match('/NetBSD/i',$agent)){
$os='NetBSD';
}elseif(preg_match('/BSD/i',$agent)){
$os='BSD';
}elseif(preg_match('/OSF1/i',$agent)){
$os='OSF1';
}elseif(preg_match('/IRIX/i',$agent)){
$os='IRIX';
}elseif(preg_match('/FreeBSD/i',$agent)){
$os='FreeBSD';
}elseif(preg_match('/teleport/i',$agent)){
$os='teleport';
}elseif(preg_match('/flashget/i',$agent)){
$os='flashget';
}elseif(preg_match('/webzip/i',$agent)){
$os='webzip';
}elseif(preg_match('/offline/i',$agent)){
$os='offline';
}else{
$os='未知操作系统';
}
return$os;
}
/**
*获取客户端的浏览器类型
*@returnstring
*/
functionget_broswer($sys){
if(stripos($sys,"Firefox/")>0){
preg_match("/Firefox\/([^;)]+)+/i",$sys,$b);
$exp[0]="Firefox";
$exp[1]=$b[1];//获取火狐浏览器的版本号
}elseif(stripos($sys,"Maxthon")>0){
preg_match("/Maxthon\/([\d\.]+)/",$sys,$aoyou);
$exp[0]="傲游";
$exp[1]=$aoyou[1];
}elseif(stripos($sys,"MSIE")>0){
preg_match("/MSIE\s+([^;)]+)+/i",$sys,$ie);
$exp[0]="IE";
$exp[1]=$ie[1];//获取IE的版本号
}elseif(stripos($sys,"OPR")>0){
preg_match("/OPR\/([\d\.]+)/",$sys,$opera);
$exp[0]="Opera";
$exp[1]=$opera[1];
}elseif(stripos($sys,"Edge")>0){
//win10Edge浏览器添加了chrome内核标记在判断Chrome之前匹配
preg_match("/Edge\/([\d\.]+)/",$sys,$Edge);
$exp[0]="Edge";
$exp[1]=$Edge[1];
}elseif(stripos($sys,"Chrome")>0){
preg_match("/Chrome\/([\d\.]+)/",$sys,$google);
$exp[0]="Chrome";
$exp[1]=$google[1];//获取googlechrome的版本号
}elseif(stripos($sys,'rv:')>0&&stripos($sys,'Gecko')>0){
preg_match("/rv:([\d\.]+)/",$sys,$IE);
$exp[0]="IE";
$exp[1]=$IE[1];
}else{
$exp[0]="未知浏览器";
$exp[1]="";
}
return$exp[0].'('.$exp[1].')';
}
/**
*根据客户端IP获取到其具体的位置信息
*@paramunknown$ip
*@returnstring
*/
functionget_address_by_ip($ip){
$url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_HEADER,0);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$info=curl_exec($curl);
curl_close($curl);
return$info;
}
functionclientlog(){
$useragent=$_SERVER['HTTP_USER_AGENT'];
$clientip=$_SERVER['REMOTE_ADDR'];
$client_info=get_os($useragent)."---".get_broswer($useragent);
$rawdata_position=get_address_by_ip($clientip);
$rawdata_position=json_decode($rawdata_position,true);
$country=$rawdata_position['data']['country'];
$province=$rawdata_position['data']['region'];
$city=$rawdata_position['data']['city'];
$nettype=$rawdata_position['data']['isp'];
$time=date('y-m-dh:m:s');
$data="来自{$country}{$province}{$city}{$nettype}的客户端:{$client_info},IP为:{$clientip},在{$time}时刻访问了{$_SERVER['PHP_SELF']}文件!\r\n";
$filename="./log.log";
if(!file_exists($filename)){
fopen($filename,"w+");
}
file_put_contents($filename,$data,FILE_APPEND);
}
2.在别的文件引入这个comm_function.php
require_once"comm_function.php";
以上这篇PHP记录访客的浏览信息方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。