Home  >  Article  >  Backend Development  >  How to get client information in php

How to get client information in php

(*-*)浩
(*-*)浩Original
2019-09-30 11:46:394248browse

How to get client information in php

Used to obtain user client information (Recommended learning: PHP video tutorial)

<?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;
}
}

The above is the detailed content of How to get client information in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn