9
votes

La détection de système d'exploitation la plus simple avec PHP?

J'essaie de comprendre que le système d'exploitation du visiteur est soit une Windows, Mac ou Linux à l'aide de PHP (je n'ai pas besoin de la version, Distro Info .. etc.). Il y a plusieurs méthodes là-bas, mais ils ont l'air un peu trop compliqué pour cette exigence simple.

Y a-t-il des moyens simples qui pourraient fournir ce type d'informations tout en étant encore assez fiable?

Merci d'avance.


3 Réponses :


6
votes

Pour une solution facile, j'ai un look ici . L'en-tête d'agent utilisateur peut révéler certaines informations du système d'exploitation, mais je ne compterais pas à ce sujet.

Pour votre cas d'utilisation, je ferais un appel AJAX à l'aide de JavaScript à partir du client pour informer votre serveur du système d'exploitation du client. Et faites-le imperméable. P>

Voici un exemple. P>

JavaScript (côté client, détection de navigateur + appel AJAX): P>

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $session = session_id(); 
    $user_id = isset($user_id) ? $user_id : 0; 
    $browser = isset($_POST['browser']) ? $_POST['browser'] : ''; 
    $version = isset($_POST['version']) ? $_POST['version'] : ''; 
    $os = isset($_POST['os']) ? $_POST['os'] : ''; 

    // now do here whatever you like with this information
} 


2 commentaires

Semble fiable. Cependant, je suppose que la détection ne se produit qu'après la charge de la page?


Sans charge de page Vous ne pourrez pas récupérer plus que ce que l'en-tête d'agent utilisateur révèle. Eh bien, vous pouvez enregistrer le système d'exploitation Utilisateurs lors de l'initialisation de la session (sur la charge de première page), une solution de contournement pourrait être de rediriger à une deuxième page après avoir détecté le système d'exploitation sur la première page.



0
votes

Utilisez le package Net_UserAgent

docu est ici: http: // poire. php.net/package/net_useragent_detect/docs/latest/net_useragent/net_useragent_detect.html#methodgetossTring

Obtenez le fichier PHP ici: Emballage / Net_useragent_Detect / Docs / Dernier / __ Filesource / fsource_net_useragent__net_useragent_detect-2.5.1Detect.php.html


0 commentaires

26
votes
<?php

$agent = $_SERVER['HTTP_USER_AGENT'];

if(preg_match('/Linux/',$agent)) $os = 'Linux';
elseif(preg_match('/Win/',$agent)) $os = 'Windows';
elseif(preg_match('/Mac/',$agent)) $os = 'Mac';
else $os = 'UnKnown';


echo $os;

?>

0 commentaires