PHP 记录访客的浏览信息方法
程序员文章站
2022-04-29 16:34:07
可以记录访客的地理位置,操作系统,浏览器,ip,时间和访问的文件。
1.首先创建一个comm_function.php文件:
可以记录访客的地理位置,操作系统,浏览器,ip,时间和访问的文件。
1.首先创建一个comm_function.php文件:
<?php //echo $_server['http_user_agent']; //echo "<br />".$_server ['remote_addr']; /** * 获取客户端类型,手机还是电脑,以及相应的操作系统类型。 * * @param string $subject */ function get_os($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 ( '/linux/i', $agent )) { if(preg_match("/mobile/", $agent)){ if(preg_match("/qq/i", $agent)){ $os = "android qq browser"; }else{ $os = "android browser"; } }else{ $os = 'pc-linux'; } } else if (preg_match ( '/mac/i', $agent )) { if(preg_match("/mobile/", $agent)){ if(preg_match("/qq/i", $agent)){ $os = "iphone qq browser"; }else{ $os = "iphone browser"; } }else{ $os = 'mac os x'; } } 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; } /** * 获取 客户端的浏览器类型 * @return string */ function get_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) { //win10 edge浏览器 添加了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]; //获取google chrome的版本号 } 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 获取到其具体的位置信息 * @param unknown $ip * @return string */ function get_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; } function clientlog() { $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-d h: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 记录访客的浏览信息方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。