Dans le développement Web, la compréhension des informations du client (navigateur, du système d'exploitation, etc.) est très importante pour le débogage et l'adaptation à différents environnements. PHP est livré avec la fonction get_browser () , qui peut être utilisé pour identifier le navigateur de l'utilisateur et ses caractéristiques, mais sa précision est affectée par la fréquence de mise à jour du fichier Browserscap.ini et ne peut parfois pas répondre à tous les besoins.
Afin d'identifier plus précisément les informations de version client, nous pouvons l'utiliser en conjonction avec get_browser () en personnalisant une fonction get_client_version . Ce qui suit expliquera en détail comment l'implémenter.
Tout d'abord, assurez-vous que BrowserCap est activé dans votre configuration PHP et pointe vers un dernier fichier BrowserCap.ini .
Configurer dans php.ini :
browscap = "https://gitbox.net/path/to/browscap.ini"
Bien sûr, il est recommandé de télécharger Browser.ini sur le serveur local pendant le déploiement réel et de le configurer comme chemin local pour éviter l'accès à distance à chaque demande.
Voici un exemple simple de la façon de l'implémenter dans PHP:
<?php
/**
* Obtenez des informations sur la version client
*
* @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,
];
// Tests supplémentaires pour certaines circonstances particulières,Par exemple, mobile
if (stripos($userAgent, 'iPhone') !== false) {
$clientData['device'] = 'iPhone';
} elseif (stripos($userAgent, 'Android') !== false) {
$clientData['device'] = 'Android';
} else {
$clientData['device'] = 'Desktop';
}
return $clientData;
}
// Exemple d'appel
$clientInfo = get_client_version();
echo '<pre>';
print_r($clientInfo);
echo '</pre>';
?>
Parfois, les informations obtenues par get_browser () sont relativement rugueuses. Nous pouvons combiner des expressions régulières pour effectuer une analyse secondaire de l'agent utilisateur, comme l'identification des navigateurs WeChat, des mini programmes, des navigateurs Douyin, etc.:
<?php
/**
* Identification plus précise des versions clients,Inclure spécifiqueAppNavigateur intégré
*
* @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';
}
// Détection spécialeAppNavigateur intégré
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;
}
// Exemple d'appel
$clientInfo = get_client_version();
echo '<pre>';
print_r($clientInfo);
echo '</pre>';
?>
get_browser () dépend du fichier Browserscap.ini . N'oubliez pas de le mettre à jour régulièrement, sinon le résultat de reconnaissance peut être dépassé.
Les utilisateurs peuvent forger un agent utilisateur, donc ces méthodes de reconnaissance ne conviennent que pour les expériences d'optimisation et non pour la vérification de la sécurité.
Si une identification plus complexe est nécessaire (comme la distinction entre les navigateurs intérieurs et extérieurs, etc.), il peut être encore amélioré en combinaison avec des bibliothèques tierces telles que le browser / analyseur .
En combinant la fonction get_browser () de PHP avec la logique de Get_Client_version personnalisée, nous pouvons améliorer efficacement la précision et la flexibilité de la reconnaissance du client. En particulier dans l'environnement Internet mobile, il peut identifier avec précision l'environnement de l'appareil et de l'application et peut optimiser considérablement l'expérience utilisateur et l'adaptation des fonctions.