>백엔드 개발 >PHP 문제 >PHP로 클라이언트 정보를 얻는 방법

PHP로 클라이언트 정보를 얻는 방법

(*-*)浩
(*-*)浩원래의
2019-09-30 11:46:394303검색

PHP로 클라이언트 정보를 얻는 방법

사용자 클라이언트 정보를 얻는 데 사용됩니다 (권장 학습: PHP 비디오 튜토리얼)

<?php

class userPCInfo{
//获取客户端浏览器
public static function get_client_browser(){
    $sys = $_SERVER[&#39;HTTP_USER_AGENT&#39;];  //获取用户代理字符串
    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;
}

//获取客户端操作系统
public static function get_client_os(){
    $agent = $_SERVER[&#39;HTTP_USER_AGENT&#39;];
    $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)){
        $os = &#39;Linux&#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;
}
//获取ip地址
public static function get_ip() {
    //判断服务器是否允许$_SERVER
    if (isset($_SERVER)) {
        if (isset($_SERVER[&#39;HTTP_X_FORWARDED_FOR&#39;])) {
            $realip = $_SERVER[&#39;HTTP_X_FORWARDED_FOR&#39;];
        } elseif (isset($_SERVER[&#39;HTTP_CLIENT_IP&#39;])) {
            $realip = $_SERVER[&#39;HTTP_CLIENT_IP&#39;];
        } else {
            $realip = $_SERVER[&#39;REMOTE_ADDR&#39;];
        }
    } else {
        //不允许就使用getenv获取
        if (getenv("HTTP_X_FORWARDED_FOR")) {
            $realip = getenv("HTTP_X_FORWARDED_FOR");
        } elseif (getenv("HTTP_CLIENT_IP")) {
            $realip = getenv("HTTP_CLIENT_IP");
        } else {
            $realip = getenv("REMOTE_ADDR");
        }
    }
    return $realip;
}
//获取当前ip所在城市
public static function GetIpLookup($ip = &#39;&#39;){
    if(empty($ip)){
        return &#39;请输入IP地址&#39;;
    }
    $test= &#39;http://ip.taobao.com/service/getIpInfo.php?ip=&#39;.$ip;
    $res = @file_get_contents($test);
    return $res;
}
}

위 내용은 PHP로 클라이언트 정보를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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