2010-11-05 8 views
8

Sto provando a capire che il sistema operativo del visitatore è Windows, Mac o Linux usando PHP (non ho bisogno della versione, delle informazioni sulla distro ... ecc.). Ci sono diversi metodi là fuori, ma sembrano un po 'troppo complicati per questo semplice requisito.Rilevamento del sistema operativo più semplice con PHP?

Esistono modi semplici che potrebbero fornire questo tipo di informazioni pur essendo abbastanza affidabili?

Grazie in anticipo.

+1

http://stackoverflow.com/questions/228256/operating-system-from-user-agent-http-header – user187291

+0

possibile duplicato di [Ottieni informazioni sul sistema operativo con PHP] (http://stackoverflow.com/questions/18070154/get-operating-system-info-with-php) –

risposta

6

Per una soluzione facile dare un'occhiata here. L'intestazione user-agent potrebbe rivelare alcune informazioni sul sistema operativo, ma non ci conterei.

Per il tuo caso, farei una chiamata ajax utilizzando javascript dal lato client per informare il tuo server del sistema operativo del client. E fallo impermeabile.

Ecco un esempio.

Javascript (lato client, il rilevamento del browser + chiamata AJAX):

window.addEvent('domready', function() { 
    if (BrowserDetect) { 
    var q_data = 'ajax=true&browser=' + BrowserDetect.browser + '&version=' + BrowserDetect.version + '&os=' + BrowserDetect.OS; 
    var query = 'record_browser.php' 
    var req = new Request.JSON({url: query, onComplete: setSelectWithJSON, data: q_data}).post(); 
    } 
}); 

PHP (lato server):

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 
} 
+0

Sembra affidabile. Tuttavia, suppongo che il rilevamento avvenga solo dopo il caricamento della pagina? – user435216

+0

Senza il caricamento della pagina non sarà possibile recuperare più di quello che rivela l'intestazione dell'utente-agente. Bene, è possibile salvare il SO degli utenti durante l'inizializzazione della sessione (al caricamento della prima pagina), una soluzione potrebbe essere quella di eseguire un reindirizzamento a una seconda pagina dopo aver rilevato il sistema operativo nella prima pagina. – Thariama

+0

Il link è rotto –

22
<?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

Mi sembra buono! –