首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 獲取手機客戶端瀏覽器信息的工具類實作

     編輯:PHP 相關知識

PHP 獲取手機客戶端瀏覽器信息的工具類實作

早期 WAP 開發時代,伺服器需識別手機型號、瀏覽器特性、甚至手機號碼以提供差異化服務。本文封裝一個 mobile 類,整合常見手機信息獲取方法,供歷史項目維護或特殊場景參考。

類結構與核心方法

<?php
class mobile {
    /** 獲取手機號碼(依賴運營商網關 Header) */
    public function getPhoneNumber() {
        if (isset($_SERVER['HTTP_X_NETWORK_INFO'])) {
            $str = $_SERVER['HTTP_X_NETWORK_INFO'];
            return preg_replace('/(.*,)(11\d)(,.*)/i', '$2', $str);
        } elseif (isset($_SERVER['HTTP_X_UP_CALLING_LINE_ID'])) {
            return $_SERVER['HTTP_X_UP_CALLING_LINE_ID'];
        } elseif (isset($_SERVER['HTTP_X_UP_SUBNO'])) {
            $str = $_SERVER['HTTP_X_UP_SUBNO'];
            return preg_replace('/(.*)(11\d)(.*)/i', '$2', $str);
        } elseif (isset($_SERVER['DEVICEID'])) {
            return $_SERVER['DEVICEID'];
        }
        return false;
    }

    /** 獲取完整 HTTP Header 信息 */
    public function getHttpHeader() {
        $str = '';
        foreach ($_SERVER as $key => $val) {
            $val = str_replace('&', '&', $val);
            $str .= "$key -> $val\r\n";
        }
        return $str;
    }

    /** 獲取 User-Agent */
    public function getUA() {
        return isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : false;
    }

    /** 解析手機類型(取 UA 首段) */
    public function getPhoneType() {
        $ua = $this->getUA();
        return $ua ? explode(' ', $ua)[0] : false;
    }

    /** 判斷是否 Opera 瀏覽器 */
    public function isOpera() {
        $ua = $this->getUA();
        return $ua && preg_match('/.*Opera.*/i', $ua);
    }

    /** 判斷是否 M3Gate 瀏覽器 */
    public function isM3gate() {
        $ua = $this->getUA();
        return $ua && preg_match('/M3Gate/i', $ua);
    }

    /** 獲取 HTTP Accept Header */
    public function getHttpAccept() {
        return isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : false;
    }

    /** 獲取客戶端 IP(支援代理穿透) */
    public function getIP() {
        $ip = getenv('REMOTE_ADDR');
        $forwarded = getenv('HTTP_X_FORWARDED_FOR');
        if ($forwarded && $forwarded !== 'unknown') {
            $ip = $forwarded;
        }
        return $ip;
    }
}
?>

使用說明與局限

  • 手機號碼獲取:高度依賴運營商 WAP 網關注入的特定 Header(如 HTTP_X_NETWORK_INFO),現代 4G/5G 環境下極少見,僅供歷史參考。
  • UA 解析:getPhoneType() 簡單取首段,實際項目建議引入專業 UA 解析庫(如 ua-parser)。
  • IP 獲取:已處理 X-Forwarded-For,但需注意 Header 可偽造,安全敏感場景需結合信任代理名單。

現代替代方案

目前響應式設計與前端適配為主流,伺服器端設備識別多用於統計分析、風控策略。推薦使用 Mobile_Detect、DeviceDetector 等成熟庫,支援更豐富的設備屬性與準確度。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved