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

PHP 判斷裝置類型:電腦還是手機訪問的實用偵測函式

     編輯:PHP 相關知識

應用場景

響應式設計雖然普及,但某些情境仍需在伺服器端判斷裝置類型(如載入不同 CSS、導向專屬版面、統計流量來源)。以下提供一個經過測試的 PHP 偵測函式,可區分桌機與行動裝置。

完整偵測程式碼

<?php

function check_wap() {
    // 1. 檢查常見的 Proxy/閘道標頭
    if (isset($_SERVER['HTTP_VIA'])) return true;
    if (isset($_SERVER['HTTP_X_NOKIA_CONNECTION_MODE'])) return true;
    if (isset($_SERVER['HTTP_X_UP_CALLING_LINE_ID'])) return true;

    // 2. 檢查 Accept 標頭是否包含 WML
    if (strpos(strtoupper($_SERVER['HTTP_ACCEPT']), "VND.WAP.WML") !== false) {
        return true;
    }

    // 3. 分析 User-Agent
    $browser = isset($_SERVER['HTTP_USER_AGENT']) ? trim($_SERVER['HTTP_USER_AGENT']) : '';
    if (empty($browser)) return true; // 無 UA 視為行動裝置

    // 作業系統關鍵字
    $mobile_os_list = array(
        'Google Wireless Transcoder', 'Windows CE', 'WindowsCE', 'Symbian',
        'Android', 'armv6l', 'armv5', 'Mobile', 'CentOS', 'mowser',
        'AvantGo', 'Opera Mobi', 'J2ME/MIDP', 'Smartphone', 'Go.Web',
        'Palm', 'iPAQ'
    );

    // 裝置/瀏覽器特徵關鍵字
    $mobile_token_list = array(
        'Profile/MIDP', 'Configuration/CLDC-', '160×160', '176×220',
        '240×240', '240×320', '320×240', 'UP.Browser', 'UP.Link',
        'SymbianOS', 'PalmOS', 'PocketPC', 'SonyEricsson', 'Nokia',
        'BlackBerry', 'Vodafone', 'BenQ', 'Novarra-Vision', 'Iris',
        'NetFront', 'HTC_', 'Xda_', 'SAMSUNG-SGH', 'Wapaka', 'DoCoMo',
        'iPhone', 'iPod'
    );

    $found_mobile = checkSubstrs($mobile_os_list, $browser) ||
                    checkSubstrs($mobile_token_list, $browser);

    return $found_mobile;
}

function checkSubstrs($list, $str) {
    foreach ($list as $keyword) {
        if (strpos($str, $keyword) !== false) {
            return true;
        }
    }
    return false;
}

// 使用範例
if (check_wap()) {
    echo "wap"; // 行動裝置
} else {
    echo "web"; // 桌機
}
?>

使用建議

  • 將判斷結果儲存至 Session 或 Cookie,避免每次請求重複運算。
  • 搭配響應式 CSS(Media Queries)使用,伺服器端判斷作為輔助而非唯一依據。
  • 定期更新關鍵字清單,因為新裝置、新瀏覽器層出不窮。
  • 考慮使用成熟函式庫(如 Mobile_Detect)以獲得更完整、維護性更佳的偵測能力。

總結

透過分析 HTTP 標頭與 User-Agent 字串,PHP 即可在伺服器端可靠地辨識訪客裝置類型,為差異化內容呈現提供決策依據。

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