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

PHP 判斷裝置平台:iOS、Android 與微信瀏覽器檢測

     編輯:PHP 綜合知識

透過分析 `$_SERVER['HTTP_USER_AGENT']` 字串,可識別用戶裝置作業系統(iOS/Android)及是否為微信內建瀏覽器。本文提供三種判斷寫法與微信檢測範例,並說明注意事項。

核心原理

User-Agent 範例:
Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1
Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Mobile Safari/537.36
... MicroMessenger/8.0.16 ... (微信)

方法一:封裝函式回傳裝置類型

function getDeviceType(): string {
    $ua = strtolower($_SERVER['HTTP_USER_AGENT'] ?? '');
    if (strpos($ua, 'iphone') !== false || strpos($ua, 'ipad') !== false) return 'ios';
    if (strpos($ua, 'android') !== false) return 'android';
    return 'other';
}

// 使用
$type = getDeviceType(); // 'ios' | 'android' | 'other'
echo "Device: $type";

方法二:直接內聯判斷(簡潔版)

$ua = $_SERVER['HTTP_USER_AGENT'] ?? '';
if (stripos($ua, 'iPhone') || stripos($ua, 'iPad')) {
    echo 'iOS';
} elseif (stripos($ua, 'Android')) {
    echo 'Android';
} else {
    echo 'Other';
}

方法三:正則表達式精確匹配(可擴展)

function detectOS(string $ua): string {
    $patterns = [
        'ios'     => '/iphone|ipad|ipod/i',
        'android' => '/android/i',
        'windows' => '/windows phone/i',
        'mac'     => '/macintosh|mac os x/i',
    ];
    foreach ($patterns as $os => $regex) {
        if (preg_match($regex, $ua)) return $os;
    }
    return 'unknown';
}

微信瀏覽器檢測與版本號獲取

function isWeChat(): bool {
    return strpos($_SERVER['HTTP_USER_AGENT'] ?? '', 'MicroMessenger') !== false;
}

function getWeChatVersion(): ?string {
    $ua = $_SERVER['HTTP_USER_AGENT'] ?? '';
    if (preg_match('/MicroMessenger\/([\d.]+)/', $ua, $m)) {
        return $m[1]; // 如 '8.0.16'
    }
    return null;
}

// 業務邏輯範例
if (!isWeChat()) {
    header('HTTP/1.1 403 Forbidden');
    exit('請在微信中打開');
}
echo "微信版本: " . getWeChatVersion();

重要提醒

  • User-Agent 可偽造:安全敏感業務(如支付、下載)不可單靠 UA 判斷,需結合伺服器端驗證(如微信 JSAPI 支付需驗證 OpenID)。
  • 大小寫不敏感:建議使用 `stripos` 或 `strtolower` 統一處理。
  • 平板裝置:iPadOS 13+ UA 預設為桌面模式(不含 `iPad`),需額外檢測 `Macintosh` + `touch` 特徵或依賴 JS `navigator.maxTouchPoints`。
  • 快取問題:若頁面被快取(CDN/Proxy),UA 判斷可能失效,建議在邊緣節點或 JS 端二次判斷導向。

善用 UA 解析庫(如 `jenssegers/agent`)可獲得更完整的裝置、瀏覽器、機器人資訊,適合分析統計與複雜業務分流。

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