加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹤壁站长网 (https://www.0392zz.cn/)- 分布式云、存储数据、视频终端、媒体处理、内容创作!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP 记录访客的浏览信息方法

发布时间:2022-07-15 11:40:01 所属栏目:PHP教程 来源:互联网
导读:下面小编就为大家分享一篇PHP 记录访客的浏览信息方法,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。 可以记录访客的地理位置,操作系统,浏览器,IP,时间和访问的文件。 1.首先创建一个comm_function.php文件: ?php //echo $_SERVE
  下面小编就为大家分享一篇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("/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 );
  }
  2.在别的文件引入这个comm_function.php
 
  require_once "comm_function.php";

(编辑:鹤壁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读