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 记录访客的浏览信息方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持免费资源网。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容