>백엔드 개발 >PHP 튜토리얼 >PHP로 방문자 검색 정보 기록을 작성하는 방법은 무엇입니까?

PHP로 방문자 검색 정보 기록을 작성하는 방법은 무엇입니까?

墨辰丷
墨辰丷원래의
2018-05-16 16:52:321417검색

이 글은 주로 PHP로 방문자 검색 정보 기록을 작성하는 방법을 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

1. 먼저 comm_function.php 파일을 만듭니다:

<?php
//echo $_SERVER[&#39;HTTP_USER_AGENT&#39;];
//echo "<br />".$_SERVER [&#39;REMOTE_ADDR&#39;];
/**
 * 获取客户端类型,手机还是电脑,以及相应的操作系统类型。
 *
 * @param string $subject
 */
function get_os($agent) {
  $os = false;
  if (preg_match ( &#39;/win/i&#39;, $agent ) && strpos ( $agent, &#39;95&#39; )) {
    $os = &#39;Windows 95&#39;;
  } else if (preg_match ( &#39;/win 9x/i&#39;, $agent ) && strpos ( $agent, &#39;4.90&#39; )) {
    $os = &#39;Windows ME&#39;;
  } else if (preg_match ( &#39;/win/i&#39;, $agent ) && preg_match ( &#39;/98/i&#39;, $agent )) {
    $os = &#39;Windows 98&#39;;
  } else if (preg_match ( &#39;/win/i&#39;, $agent ) && preg_match ( &#39;/nt 6.0/i&#39;, $agent )) {
    $os = &#39;Windows Vista&#39;;
  } else if (preg_match ( &#39;/win/i&#39;, $agent ) && preg_match ( &#39;/nt 6.1/i&#39;, $agent )) {
    $os = &#39;Windows 7&#39;;
  } else if (preg_match ( &#39;/win/i&#39;, $agent ) && preg_match ( &#39;/nt 6.2/i&#39;, $agent )) {
    $os = &#39;Windows 8&#39;;
  } else if (preg_match ( &#39;/win/i&#39;, $agent ) && preg_match ( &#39;/nt 10.0/i&#39;, $agent )) {
    $os = &#39;Windows 10&#39;; // 添加win10判断
  } else if (preg_match ( &#39;/win/i&#39;, $agent ) && preg_match ( &#39;/nt 5.1/i&#39;, $agent )) {
    $os = &#39;Windows XP&#39;;
  } else if (preg_match ( &#39;/win/i&#39;, $agent ) && preg_match ( &#39;/nt 5/i&#39;, $agent )) {
    $os = &#39;Windows 2000&#39;;
  } else if (preg_match ( &#39;/win/i&#39;, $agent ) && preg_match ( &#39;/nt/i&#39;, $agent )) {
    $os = &#39;Windows NT&#39;;
  } else if (preg_match ( &#39;/win/i&#39;, $agent ) && preg_match ( &#39;/32/i&#39;, $agent )) {
    $os = &#39;Windows 32&#39;;
  } else if (preg_match ( &#39;/linux/i&#39;, $agent )) {
    if(preg_match("/Mobile/", $agent)){
      if(preg_match("/QQ/i", $agent)){
        $os = "Android QQ Browser";
      }else{
        $os = "Android Browser";
      }
    }else{
      $os = &#39;PC-Linux&#39;;
    }
  } else if (preg_match ( &#39;/Mac/i&#39;, $agent )) {
    if(preg_match("/Mobile/", $agent)){
      if(preg_match("/QQ/i", $agent)){
        $os = "IPhone QQ Browser";
      }else{
        $os = "IPhone Browser";
      }
    }else{
      $os = &#39;Mac OS X&#39;;
    }
  } else if (preg_match ( &#39;/unix/i&#39;, $agent )) {
    $os = &#39;Unix&#39;;
  } else if (preg_match ( &#39;/sun/i&#39;, $agent ) && preg_match ( &#39;/os/i&#39;, $agent )) {
    $os = &#39;SunOS&#39;;
  } else if (preg_match ( &#39;/ibm/i&#39;, $agent ) && preg_match ( &#39;/os/i&#39;, $agent )) {
    $os = &#39;IBM OS/2&#39;;
  } else if (preg_match ( &#39;/Mac/i&#39;, $agent ) && preg_match ( &#39;/PC/i&#39;, $agent )) {
    $os = &#39;Macintosh&#39;;
  } else if (preg_match ( &#39;/PowerPC/i&#39;, $agent )) {
    $os = &#39;PowerPC&#39;;
  } else if (preg_match ( &#39;/AIX/i&#39;, $agent )) {
    $os = &#39;AIX&#39;;
  } else if (preg_match ( &#39;/HPUX/i&#39;, $agent )) {
    $os = &#39;HPUX&#39;;
  } else if (preg_match ( &#39;/NetBSD/i&#39;, $agent )) {
    $os = &#39;NetBSD&#39;;
  } else if (preg_match ( &#39;/BSD/i&#39;, $agent )) {
    $os = &#39;BSD&#39;;
  } else if (preg_match ( &#39;/OSF1/i&#39;, $agent )) {
    $os = &#39;OSF1&#39;;
  } else if (preg_match ( &#39;/IRIX/i&#39;, $agent )) {
    $os = &#39;IRIX&#39;;
  } else if (preg_match ( &#39;/FreeBSD/i&#39;, $agent )) {
    $os = &#39;FreeBSD&#39;;
  } else if (preg_match ( &#39;/teleport/i&#39;, $agent )) {
    $os = &#39;teleport&#39;;
  } else if (preg_match ( &#39;/flashget/i&#39;, $agent )) {
    $os = &#39;flashget&#39;;
  } else if (preg_match ( &#39;/webzip/i&#39;, $agent )) {
    $os = &#39;webzip&#39;;
  } else if (preg_match ( &#39;/offline/i&#39;, $agent )) {
    $os = &#39;offline&#39;;
  } else {
    $os = &#39;未知操作系统&#39;;
  }
  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,&#39;rv:&#39;)>0 && stripos($sys,&#39;Gecko&#39;)>0){
    preg_match("/rv:([\d\.]+)/", $sys, $IE);
    $exp[0] = "IE";
    $exp[1] = $IE[1];
  }else {
    $exp[0] = "未知浏览器";
    $exp[1] = "";
  }
  return $exp[0].&#39;(&#39;.$exp[1].&#39;)&#39;;
}
/**
 * 根据 客户端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 [&#39;HTTP_USER_AGENT&#39;];
  $clientip = $_SERVER [&#39;REMOTE_ADDR&#39;];
  $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[&#39;data&#39;][&#39;country&#39;];
  $province = $rawdata_position[&#39;data&#39;][&#39;region&#39;];
  $city = $rawdata_position[&#39;data&#39;][&#39;city&#39;];
  $nettype = $rawdata_position[&#39;data&#39;][&#39;isp&#39;];
 
  $time = date ( &#39;y-m-d h:m:s&#39; );
  $data = "来自{$country} {$province} {$city }{$nettype} 的客户端: {$client_info},IP为:{$clientip},在{$time}时刻访问了{$_SERVER[&#39;PHP_SELF&#39;]}文件!\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 방문자의 탐색 정보 방법 기록

PHP 방문자의 탐색 기록 정보 열람 정보 구현 코드

cookies_javascript 기술을 기반으로 손님 통계를 구현하고 방문자 정보를 기록하는 JS 방법

위 내용은 PHP로 방문자 검색 정보 기록을 작성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.