Position actuelle: Accueil> Derniers articles> Extension personnalisée get_client_version prend en charge plus d'informations client

Extension personnalisée get_client_version prend en charge plus d'informations client

gitbox 2025-05-11

Lors du développement d'applications Web, la compréhension des détails du client peut nous aider à effectuer une adaptation fonctionnelle plus granulaire, une vérification de la sécurité et une analyse du comportement des utilisateurs. PHP est un langage côté serveur flexible qui peut analyser l' agent utilisateur du client via des fonctions, mais nous pouvons également implémenter des fonctions d'extraction d'informations client plus puissantes et extensibles via la fonction Get_Client_version personnalisée.

1. Idées de base

L'objectif principal de la fonction get_client_version est d'extraire le type du client (tel que le navigateur, le système d'exploitation, le type de périphérique) et les informations de version de l'en-tête de demande. Nous allons l'implémenter en analysant $ _server ['http_user_agent'] et prendre en charge le chargement des règles d'extension personnalisées.

2. Implémentation de la fonction

Ce qui suit est la version de base de l'implémentation de la fonction get_client_version et prend en charge le chargement des extensions définies par l'utilisateur:

 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\.]+)/',
    ];

    // Fusionner les règles personnalisées
    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. Utilisez des exemples

 $client_info = get_client_version();

// Informations sur le client de sortie
echo '<pre>';
print_r($client_info);
echo '</pre>';

4. Prise en charge des extensions personnalisées

Vous pouvez détecter les caractéristiques du client exclusives en passant des règles personnalisées, telles que les clients d'application personnalisés au sein de l'entreprise ou certains shells de navigateur spéciaux.

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

$client_info = get_client_version(null, $custom_rules);

// Informations sur le client de sortie,Inclure du contenu personnalisé
echo '<pre>';
print_r($client_info);
echo '</pre>';

V. Scénarios d'application typiques

  1. Analyse des utilisateurs : Statistiques Le navigateur et la distribution de versions utilisés par les utilisateurs.

  2. Traitement de compatibilité fonctionnelle : l'optimisation de la compatibilité est faite pour différents navigateurs ou systèmes.

  3. Politique de sécurité : identifier les clients non pris en charge et interdire l'accès.

  4. Restrictions API : restreignez certains clients à appeler certaines interfaces en fonction des informations du client.

Vi. Suggestions de déploiement

  • Il est recommandé d'appeler get_client_version à l'entrée publique du projet et de mettre en cache les résultats à $ _Session ou journalisation.

  • Pour les environnements de concurrence élevés, il est recommandé de combiner redis ou cache de fichier pour éviter l'analyse répétée.

7. Lien de référence