現在の位置: ホーム> 最新記事一覧> get_client_versionとget_browser()と組み合わせて、より正確な識別を実現します

get_client_versionとget_browser()と組み合わせて、より正確な識別を実現します

gitbox 2025-05-08

Web開発では、クライアント(ブラウザ、オペレーティングシステムなど)の情報を理解することは、さまざまな環境へのデバッグや適応に非常に重要です。 PHPにはget_browser()関数が付属しています。これは、ユーザーのブラウザとその特性を識別するために使用できますが、その精度はbrowserscap.iniファイルの更新頻度の影響を受け、すべてのニーズを満たすことができません。

クライアントバージョン情報をより正確に識別するために、 get_client_version関数をカスタマイズすることにより、get_browser()と併せて使用できます。以下は、それを実装する方法を詳細に説明します。

1。環境準備

まず、PHP構成でBrowsercapが有効になっていることを確認し、最新のBrowsercap.iniファイルを指してください。

php.iniで構成:

 browscap = "https://gitbox.net/path/to/browscap.ini"

もちろん、実際の展開中にbrowser.iniをローカルサーバーにダウンロードし、リクエストごとにリモートアクセスを回避するためのローカルパスとして構成することをお勧めします。

2。基本的な実装

PHPで実装する方法の簡単な例を次に示します。

 <?php

/**
 * クライアントバージョン情報を取得します
 *
 * @return array
 */
function get_client_version() {
    $userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
    $browserInfo = get_browser(null, true);

    $clientData = [
        'browser' => $browserInfo['browser'] ?? 'Unknown',
        'version' => $browserInfo['version'] ?? 'Unknown',
        'platform' => $browserInfo['platform'] ?? 'Unknown',
        'user_agent' => $userAgent,
    ];

    // 特定の特別な状況の補足テスト,たとえば、モバイル
    if (stripos($userAgent, 'iPhone') !== false) {
        $clientData['device'] = 'iPhone';
    } elseif (stripos($userAgent, 'Android') !== false) {
        $clientData['device'] = 'Android';
    } else {
        $clientData['device'] = 'Desktop';
    }

    return $clientData;
}

// コール例
$clientInfo = get_client_version();

echo '<pre>';
print_r($clientInfo);
echo '</pre>';
?>

3.識別をさらに最適化します

get_browser()によって取得された情報が比較的粗い場合があります。正規表現を組み合わせて、WeChatブラウザー、ミニプログラム、Douyinブラウザーなどの識別など、ユーザーエージェントの二次分析を実行できます。

 <?php

/**
 * クライアントバージョンのより正確な識別,特定のものを含めますApp内蔵ブラウザ
 *
 * @return array
 */
function get_client_version() {
    $userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
    $browserInfo = get_browser(null, true);

    $clientData = [
        'browser' => $browserInfo['browser'] ?? 'Unknown',
        'version' => $browserInfo['version'] ?? 'Unknown',
        'platform' => $browserInfo['platform'] ?? 'Unknown',
        'user_agent' => $userAgent,
        'device' => 'Desktop',
        'app' => 'None'
    ];

    if (stripos($userAgent, 'iPhone') !== false) {
        $clientData['device'] = 'iPhone';
    } elseif (stripos($userAgent, 'Android') !== false) {
        $clientData['device'] = 'Android';
    }

    // 特別な検出App内蔵ブラウザ
    if (stripos($userAgent, 'MicroMessenger') !== false) {
        $clientData['app'] = 'WeChat';
    } elseif (stripos($userAgent, 'Douyin') !== false) {
        $clientData['app'] = 'Douyin';
    } elseif (stripos($userAgent, 'miniProgram') !== false) {
        $clientData['app'] = 'MiniProgram';
    }

    return $clientData;
}

// コール例
$clientInfo = get_client_version();

echo '<pre>';
print_r($clientInfo);
echo '</pre>';
?>

4。注意すべきこと

  • get_browser()はbrowserscap.iniファイルに依存します。定期的に更新することを忘れないでください。そうしないと、認識結果が時代遅れになる場合があります。

  • ユーザーはユーザーエージェントを偽造できるため、これらの認識方法は、セキュリティ検証ではなく、最適化エクスペリエンスにのみ適しています。

  • より複雑な識別が必要な場合(内側と外側のブラウザーなどを区別するなど)、 WhathBrowser/Parserなどのサードパーティライブラリと組み合わせてさらに強化できます。

5。概要

PHPのget_browser()関数とCustom get_client_versionロジックを組み合わせることにより、クライアント認識の精度と柔軟性を効果的に改善できます。特にモバイルインターネット環境では、デバイスとアプリ環境を正確に識別でき、ユーザーエクスペリエンスと機能適応を大幅に最適化できます。