2010-11-05 9 views
8

Estoy tratando de descubrir que el sistema operativo del visitante es Windows, Mac o Linux usando PHP (no necesito la versión, información de la distribución, etc.). Existen varios métodos, sin embargo, se ven un poco complicados para este simple requisito.Detección de OS de manera más fácil con PHP?

¿Hay formas simples que puedan proporcionar este tipo de información pero que a la vez sean bastante confiables?

Gracias de antemano.

+1

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

+0

posible duplicado de [Obtener información del sistema operativo con PHP] (http://stackoverflow.com/questions/18070154/get-operating-system-info-with-php) –

Respuesta

6

Para una solución fácil eche un vistazo here. El encabezado user-agent podría revelar cierta información del sistema operativo, pero no contaría con eso.

Para su caso de uso, haría una llamada ajax utilizando javascript desde el lado del cliente para informar a su servidor del sistema operativo del cliente. Y hazlo a prueba de agua.

Aquí hay un ejemplo.

Javascript (lado del cliente, la detección del navegador + llamada 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 (lado del servidor):

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

Parece confiable. Sin embargo, supongo que la detección solo ocurre después de la carga de la página. – user435216

+0

Sin carga de página, no podrá recuperar más de lo que revela el encabezado usuario-agente. Bueno, puede guardar el sistema operativo de los usuarios al inicializar la sesión (en la carga de la primera página), una solución podría ser hacer un redireccionamiento a una segunda página después de detectar el sistema operativo en la primera página. – Thariama

+0

El enlace está roto –

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

¡Se ve bien conmigo! –

Cuestiones relacionadas