php监控访客_PHP 记录访客的浏览信息方法

可以记录访客的地理位置,操作系统,浏览器,IP,时间和访问的文件。

1.首先创建一个comm_function.php文件:

//echo $_SERVER['HTTP_USER_AGENT'];

//echo "
".$_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("/MSIEs+([^;)]+)+/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']}文件!rn";

$filename = "./log.log";

if (! file_exists ( $filename )) {

fopen ( $filename, "w+" );

}

file_put_contents ( $filename, $data, FILE_APPEND );

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值