全部
常见问题
产品动态
精选推荐

PHP如何操作可以记录访客浏览信息

管理 管理 编辑 删除

这次给大家带来PHP如何操作可以记录访客浏览信息,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";

相信看了本文案例你已经掌握了方法


请登录后查看

CRMEB-慕白寒窗雪 最后编辑于2023-06-12 18:09:17

快捷回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest==1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

作者 管理员 企业

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}   {{itemc.ip_address}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
回复
回复
1383
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} {{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
加精
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服