Je me demandais s'il y a un moyen que je peux détecter la version exacte du système d'exploitation de mon navigateur en utilisant PHP/JS/ASP? Je sais que je peux détecter le type d'OS (Windows XP, Windows Vista, OS X, etc) mais j'ai besoin de détecter la version exacte: Vista Business, Vista Ultimate, Windows XP Édition Familiale, Windows XP Pro, etc. ..détecter la version exacte du système d'exploitation à partir du navigateur
Répondre
réponse courte: Vous ne pouvez pas.
Réponse longue:
Tout ce que vous avez est les informations contenues dans l'en-tête User-Agent HTTP, qui contient généralement le nom du système d'exploitation et la version.
Habituellement, les navigateurs fonctionnant sous Mac OS et Linux envoyer suffisamment d'informations pour identifier le système d'exploitation exacte. Par exemple, voici mon en-tête User-Agent:
Mozilla/5.0 (X11; U; Linux x86_64; fr; rv: 1.9.0.7) Gecko/2009030423 Ubuntu/8.10 (Intrepid) Firefox/3.0. 7
Vous pouvez voir que je cours Ubuntu 8.10 Intrepid Ibex.
Et voici ce que Firefox et Safari 4 Rapport Beta sur mon MacBook Pro:
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5, fr; rv: 1.9.0.7) Gecko/2009021906 Firefox/3.0.7
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; fr-fr) AppleWebKit/528,16 (KHTML, comme Gecko) version/Safari 4.0/528,16
de Windows D'autre part, les navigateurs ne signalent généralement que la version du système d'exploitation et non le paquet spécifique (Pro, Professionnel, etc.):
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: x.x.x) Gecko/20041107 Firefox/x.x
Je ne pense pas que vous serez en mesure de différencier les différentes versions de Vista, mais vous devriez être en mesure d'obtenir le système d'exploitation de la propriété de la plate-forme de l'objet navigator. Vous devrez probablement l'analyser, ou le différencier en fonction de son contenu.
<script type="text/javascript">
alert(navigator.platform);
</script>
Voir www.w3schools.com tutoriels pour un example montrant comment obtenir toutes les propriétés du navigateur.
EDIT:
Pour obtenir la version exacte, vous pouvez être en mesure de développer un contrôle ActiveX (Windows uniquement) ou Java Applet et utiliser l'objet java.lang.System pour afficher les propriétés du système actuel. Vous pouvez être en mesure d'obtenir suffisamment d'informations à partir du navigateur pour les systèmes non-Windows et utiliser le contrôle uniquement pour les systèmes Windows. Je n'ai pas essayé cela, donc vous auriez besoin d'expérimenter pour voir si cela fonctionnerait. Je dois croire que le contrôle ActiveX de Microsoft pour Microsoft Update est capable de détecter la version exacte du système et des logiciels installés pour que cela fonctionne.
Comme vous l'avez dit, cela n'aidera pas à différencier les sous-versions, mais merci pour l'extrait :-) –
Vous devriez vraiment essayer d'éviter de faire quelque chose comme ça à moins que ce ne soit absolument nécessaire pour la fonctionnalité de l'application web.
Soyez conscient que:
Toutes les demandes peuvent provenir d'un client en cours d'exécution sur Windows.
Toutes les demandes ne peuvent pas provenir d'un client qui prend en charge JavaScript.
L'en-tête de l'agent utilisateur peut ne pas être présent dans la requête. Ce qui se trouve dans l'en-tête user-agent peut être trompeur.
Une application Web bien conçue doit fournir un contenu et des fonctionnalités complets, quel que soit l'en-tête user-agent de la demande ou si le client prend en charge javascript ou toute autre extension côté client.
Merci, gardera cela dans esprit. –
-1. Ne répond pas à la question OPs. Donne une opinion non sollicitée à la place. – maxedison
Il s'agit d'informations utiles sur la question, mais ne répond pas à la question elle-même (+0). Je suis d'accord avec vous, mais comme S.O. a des différences, parfois il est nécessaire de le vérifier: par exemple: windows/linux utiliser Ctrl pour multi-select, mac utiliser bowen-knot, si vous voulez expliquer cela correctement à l'utilisateur, vous pouvez: 1) expliquer tout à la fois , 2) tester le système d'exploitation. –
Comme d'autres l'ont déjà dit, non, pas de manière fiable.
C'est la raison pour laquelle par exemple jquery est passé à un navigateur-capacités système (faute d'un meilleur mot) au lieu d'un système de renifleurs de navigateur pour ses fonctionnalités.
Les cababilités du navigateur ou le reniflage du navigateur, comme vous le dites, sont liés au NAVIGATEUR, et non à S.O. A titre d'exemple, Firefox 24 dispose des mêmes fonctionnalités sur Linux, Mac ou Windows. Cette question concerne S.O., pas les navigateurs. –
Dans ASP classique et ASP.NET utiliser
Request.ServerVariables("HTTP_USER_AGENT")
Cela fonctionne mieux car il est pas de code interprété, cela est en cours d'exécution sur le serveur.
toujours bon d'avoir un code de travail ou une suggestion pour ce que la propriété à examiner – MikeJ
Après quelques googler, je trouve ce code et il semble fonctionner ok, (ne détecte pas Unix bien)
<?php
$OSList = array
(
// Match user agent string with operating systems
'Windows 3.11' => 'Win16',
'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)',
'Windows 98' => '(Windows 98)|(Win98)',
'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',
'Windows XP' => '(Windows NT 5.1)|(Windows XP)',
'Windows Server 2003' => '(Windows NT 5.2)',
'Windows Vista' => '(Windows NT 6.0)',
'Windows 7' => '(Windows NT 7.0)',
'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
'Windows ME' => 'Windows ME',
'Open BSD' => 'OpenBSD',
'Sun OS' => 'SunOS',
'Linux' => '(Linux)|(X11)',
'Mac OS' => '(Mac_PowerPC)|(Macintosh)',
'QNX' => 'QNX',
'BeOS' => 'BeOS',
'OS/2' => 'OS/2',
'Search Bot'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)'
);
// Loop through the array of user agents and matching operating systems
foreach($OSList as $CurrOS=>$Match)
{
// Find a match
if (eregi($Match, $_SERVER['HTTP_USER_AGENT']))
{
// We found the correct match
break;
}
}
// You are using ...
echo "You are using ".$CurrOS;
?>
Pas vraiment ce qu'il voulait faire, mais est-ce? :) – willcodejavaforfood
Cela ne détectera pas le paquet OS exacte (par exemple xp home vista ultime) de Windows – Ranjith
plus il ne détecte pas les systèmes d'exploitation mobiles, qui sont tout à fait nécessaires de nos jours –
à CodeIgniter vous pouvez trouver la bibliothèque appelée « user_agent ». Cela vous donnera tout ce dont vous avez vraiment besoin. Si vous n'utilisez pas CI, vous pouvez toujours "extraire" le code de votre infrastructure. J'espère que cela pourra aider. http://codeigniter.com/user_guide/libraries/user_agent.html
// cela vous aidera
$uagent = $_SERVER['HTTP_USER_AGENT'] . "<br/>";
function os_info($uagent)
{
// the order of this array is important
global $uagent;
$oses = array(
'Win311' => 'Win16',
'Win95' => '(Windows 95)|(Win95)|(Windows_95)',
'WinME' => '(Windows 98)|(Win 9x 4.90)|(Windows ME)',
'Win98' => '(Windows 98)|(Win98)',
'Win2000' => '(Windows NT 5.0)|(Windows 2000)',
'WinXP' => '(Windows NT 5.1)|(Windows XP)',
'WinServer2003' => '(Windows NT 5.2)',
'WinVista' => '(Windows NT 6.0)',
'Windows 7' => '(Windows NT 6.1)',
'Windows 8' => '(Windows NT 6.2)',
'Windows 8.1' => '(Windows NT 6.3)',
'Windows 10' => '(Windows NT 10.0)',
'WinNT' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
'OpenBSD' => 'OpenBSD',
'SunOS' => 'SunOS',
'Ubuntu' => 'Ubuntu',
'Android' => 'Android',
'Linux' => '(Linux)|(X11)',
'iPhone' => 'iPhone',
'iPad' => 'iPad',
'MacOS' => '(Mac_PowerPC)|(Macintosh)',
'QNX' => 'QNX',
'BeOS' => 'BeOS',
'OS2' => 'OS/2',
'SearchBot' => '(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)'
);
$uagent = strtolower($uagent ? $uagent : $_SERVER['HTTP_USER_AGENT']);
foreach ($oses as $os => $pattern)
if (preg_match('/' . $pattern . '/i', $uagent))
return $os;
return 'Unknown';
}
echo os_info($uagent);
Doit être accepté comme réponse. –
J'ai créé une fonction jquery qui fait cela. De cette façon, nous pouvons suivre tous les systèmes d'exploitation en utilisant navigator.
quelqu'un Hope obtenir de l'aide de ceci:
function find_os_version() {
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf("windows nt 5.0") != -1) {
return 'win2k';
}
if (ua.indexOf("windows nt 5.1") != -1) {
return 'winXP';
}
if (ua.indexOf("windows nt 6.0") != -1) {
return 'winVista';
}
if (ua.indexOf("windows nt 6.1") != -1) {
return 'win7';
}
if (ua.indexOf("windows nt 6.2") != -1) {
return 'win8';
}
}
Cela pourrait être le plus simple:
bibliothèque Télécharger de http://mobiledetect.net
Mettre Mobile_Detect.php pour 'bibliothèques' si vous utilisez CI ou simplement l'inclure.
Utilisez ce code en PHP
$detect = new Mobile_Detect();
// Get the version() of components.
$detect->version('iPad'); // 4.3 (float)
$detect->version('iPhone') // 3.1 (float)
$detect->version('Android'); // 2.1 (float)
$detect->version('Opera Mini'); // 5.0 (float)
trouver la documentation sur http://dwij.co.in/mobile-os-detection-in-php-codeigniter
Bien que la question est très ancienne, mais je suis juste d'y répondre:
juste essayer:
$this->agent->platform()
ce sera gi vous avez sortie comme: Linux, Windows, OS X, etc.
pour plus d'informations, visitez:
http://ellislab.com/codeigniter/user-guide/libraries/user_agent.html
- 1. La version du navigateur de détection
- 2. version du navigateur Regex correspondance
- 3. Obtenir la version javascript du navigateur! = IE dans asp.net
- 4. Comment obtenir la version du système d'exploitation asp.net
- 5. Comment détecter les plug-ins du navigateur?
- 6. Impression SVG à partir du navigateur
- 7. Rendu Excel à partir du navigateur
- 8. Détecter la connexion du navigateur fermée en PHP
- 9. Prise en charge de la nouvelle version du navigateur
- 10. Rechercher le nom/la version du système d'exploitation à l'aide de JScript
- 11. Énumération des onglets du navigateur à partir d'une application externe
- 12. Comment obtenir la version du système OS X?
- 13. Comment détecter la version linguistique de Windows
- 14. Comment ouvrir des liens à partir d'un composant TCppWebBrowser dans le navigateur par défaut du système
- 15. Comment démarrer l'application dans le système Android directement à partir du navigateur?
- 16. Détecter XHR erreur est vraiment due à l'arrêt du navigateur ou cliquer sur la nouvelle page
- 17. Comment détecter correctement le support du navigateur pour l'opacité?
- 18. Bibliothèques JavaScript pour détecter les capacités/plug-ins du navigateur
- 19. Méthode de navigateur croisé pour détecter le scrollTop de la fenêtre du navigateur
- 20. Étendue du système dans l'analyse du système
- 21. détecter les paramètres de proxy du navigateur Web par défaut
- 22. Détection de la fermeture du navigateur à partir de l'application flexible
- 23. collection de propriétés du système en utilisant le navigateur Web
- 24. Intégration de PDF à partir du serveur dans le navigateur
- 25. Comment détecter le système d'exploitation à partir d'une application Silverlight?
- 26. Détecter le système d'exploitation à partir de l'extension Firefox
- 27. Lancer l'économiseur d'écran du système à partir de Windows Form #
- 28. Comment améliorer la détection du navigateur avec l'objet Request.Context.Browser?
- 29. Comment tester si la version du système d'exploitation est supérieure à Windows XP SP2
Peut-être que son possible via Flash? –
@Roy: peut-être, mais je ne parierais pas dessus. –
Et notez que même cela n'est pas infaillible. Par exemple, changer votre chaîne user-agent pour signaler quelque chose d'autre est trivial dans Firefox (plugin de téléchargement) et presque trivial dans IE (changement de registre). –