現在の位置: ホーム> 最新記事一覧> カスタム拡張機能get_client_versionは、より多くのクライアント情報をサポートします

カスタム拡張機能get_client_versionは、より多くのクライアント情報をサポートします

gitbox 2025-05-11

Webアプリケーションを開発するとき、クライアントの詳細を理解することで、より詳細な機能的適応、セキュリティ検証、およびユーザーの動作分析を実行することができます。 PHPは、関数を介してクライアントのユーザーエージェントを解析できる柔軟なサーバー側の言語ですが、カスタマイズされたget_client_version関数を介して、より強力で拡張可能なクライアント情報抽出機能を実装することもできます。

1。基本的なアイデア

get_client_version関数の中心的な目的は、クライアントのタイプ(ブラウザー、オペレーティングシステム、デバイスタイプなど)とリクエストヘッダーからバージョン情報を抽出することです。これを実装します$ _Server ['http_user_agent']を解析し、カスタム拡張ルールの読み込みをサポートします。

2。機能の実装

以下は、 get_client_version関数の実装の基本バージョンであり、ユーザー定義の拡張機能の読み込みをサポートしています。

 function get_client_version($user_agent = null, $custom_rules = []) {
    if (is_null($user_agent)) {
        $user_agent = $_SERVER['HTTP_USER_AGENT'] ?? '';
    }

    $clients = [
        'Chrome' => '/Chrome\/([0-9\.]+)/',
        'Firefox' => '/Firefox\/([0-9\.]+)/',
        'Safari' => '/Version\/([0-9\.]+).*Safari/',
        'Edge' => '/Edg\/([0-9\.]+)/',
        'Opera' => '/OPR\/([0-9\.]+)/',
        'Internet Explorer' => '/MSIE\s([0-9\.]+);/',
        'Windows' => '/Windows NT ([0-9\.]+)/',
        'macOS' => '/Mac OS X ([0-9_\.]+)/',
        'iOS' => '/iPhone OS ([0-9_\.]+)/',
        'Android' => '/Android ([0-9\.]+)/',
    ];

    // カスタムルールをマージします
    if (!empty($custom_rules) && is_array($custom_rules)) {
        $clients = array_merge($clients, $custom_rules);
    }

    $result = [];

    foreach ($clients as $name => $pattern) {
        if (preg_match($pattern, $user_agent, $matches)) {
            $result[$name] = str_replace('_', '.', $matches[1]);
        }
    }

    return $result;
}

3.例を使用してください

$client_info = get_client_version();

// クライアント情報を出力します
echo '<pre>';
print_r($client_info);
echo '</pre>';

4.カスタムエクステンションをサポートします

エンタープライズ内のカスタマイズされたアプリケーションクライアントやいくつかの特別なブラウザシェルなど、カスタムルールを渡すことにより、排他的なクライアント特性を検出できます。

 $custom_rules = [
    'MyAppClient' => '/MyApp\/([0-9\.]+)/'
];

$client_info = get_client_version(null, $custom_rules);

// クライアント情報を出力します,カスタムコンテンツを含めます
echo '<pre>';
print_r($client_info);
echo '</pre>';

V.典型的なアプリケーションシナリオ

  1. ユーザー分析:統計ユーザーが使用するブラウザとバージョンの分布。

  2. 機能的互換性処理:互換性の最適化は、さまざまなブラウザーまたはシステムに対して行われます。

  3. セキュリティポリシー:サポートされていないクライアントを特定し、アクセスを禁止します。

  4. API制限:特定のクライアントに、クライアント情報に基づいて特定のインターフェイスを呼び出すように制限します。

vi。展開の提案

  • プロジェクトの公開入り口でget_client_versionを呼び出し、結果を$ _sessionまたはロギングにキャッシュすることをお勧めします。

  • 高い並行性環境の場合、Redisまたはファイルキャッシュを組み合わせて、繰り返しの解析を避けることをお勧めします。

7。リファレンスリンク