Recientemente comencé a preguntarme sobre sitios como http://thismachine.info/ que obtienen la información del sistema operativo del usuario. No he podido averiguar cómo hacer eso con PHP, y quería intentar resolverlo.
Me di cuenta de que enumeran user-agent
, lo que proporciona mucha información sobre el navegador. ¿Obtienen la información del sistema operativo de eso o de otra cosa? ¿Existe alguna API que pueda utilizar para obtener el sistema operativo del usuario?
Veo cómo obtuvieron el navegador y la IP, ¡pero no pude entender la parte del sistema operativo!
php
operating-system
user-agent
pattyd
fuente
fuente
echo $_SERVER['HTTP_USER_AGENT'];
mostrará (hasta cierto punto) el sistema operativo del usuario. Para mí, detectóMozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0
dónde estoy usando Windows XP, por lo que no es una ciencia exacta.http://thismachine.info/
sabe que estoy usando Windows XP? Eso no lo sé, sin embargo, deben estar usando un script que lo encontrará y reemplazará y luego lo repetirá. Hasta donde yo sé, no hay nada que determine el sistema operativo exacto, ya que veo que esto entraría en el dominio de valores.Windows XP
de la matriz/windows nt 5.1/i' => 'Windows XP',
Respuestas:
El siguiente código podría explicar por derecho propio cómo http://thismachine.info/ puede mostrar qué sistema operativo está usando alguien.
Lo que hace es que huele el modelo de su sistema operativo central, por ejemplo,
windows nt 5.1
como el mío.Luego pasa windows nt 5.1 / i a Windows XP como sistema operativo.
Usando:
'/windows nt 5.1/i' => 'Windows XP',
de una matriz.Se podría decir conjeturas, o una aproximación pero, sin embargo, bastante bien.
Tomado de una respuesta en SO https://stackoverflow.com/a/15497878/
Notas al pie: (19/14 de enero) Hubo una edición sugerida el 18 de enero de 2014 para agregar
/msie|trident/i
por YJSoft un nuevo miembro en SO.El comentario se lee como:
Comentario: porque ua de msie11 no incluye msie (en su lugar, incluye trident)
Investigué un poco sobre esto y encontré algunos enlaces que explican la cadena Trident.
Aunque la edición fue rechazada (no por mí, sino por algunos de los otros editores), vale la pena leer los enlaces anteriores y usar su juicio adecuado.
Según una pregunta sobre la detección de SUSE, encontré este código en la siguiente URL:
Código adicional:
Edit: 12 de abril de 2015
Ayer noté una pregunta que podría ser relevante para esta sesión de preguntas y respuestas y puede ser útil para algunos. En lo que respecta a:
Mozilla/5.0 (Linux; Android 4.4.2; SAMSUNG-GT-I9505 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36
Otra edición y agregar un enlace de referencia que se solicitó (y se respondió / aceptó hoy, 16 de noviembre) que puede ser de utilidad.
Consulte las preguntas y respuestas aquí en Stack:
fuente
'/windows nt 6.3/i'
es para Windows 8.1"mavericks HTTP_USER_AGENT"
buscar en Google @ben_aaron'/cros/i' => 'Chrome OS'
Cuando visita un sitio web, su navegador envía una solicitud al servidor web que incluye mucha información. Esta información podría verse así:
Toda esta información es utilizada por el servidor web para determinar cómo manejar la solicitud; el idioma preferido y si se permite la compresión.
En PHP, toda esta información se almacena en la
$_SERVER
matriz. Para ver lo que está enviando a un servidor web, cree un nuevo archivo PHP e imprima todo de la matriz.Esto le dará una buena representación de todo lo que se envía al servidor, desde donde puede extraer la información deseada, por ejemplo,
$_SERVER['HTTP_USER_AGENT']
para obtener el sistema operativo y el navegador.fuente
Tomó el siguiente código del manual de php para get_browser .
La
$browser
matriz tieneplatform
información incluida que le brinda el sistema operativo específico en uso.Asegúrese de ver la sección "Notas" en esa página. Esto podría ser algo que (thismachine.info) está usando si no es algo que ya se señaló en otras respuestas.
fuente
Basado en la respuesta de Fred-II , quería compartir mi opinión sobre la función getOS, evita globales, fusiona ambas listas y detecta la arquitectura (x32 / x64)
fuente
Si desea obtener toda esa información, puede leer esto:
http://php.net/manual/en/function.get-browser.php
Puede ejecutar el código de muestra y verá cómo funciona:
El ejemplo anterior generará algo similar a:
fuente
Si desea muy poca información como una clase en su html para navegadores comunes, por ejemplo, puede usar:
que devolverá 'safari' o 'firefox' o 'chrome', o 'ie ie8', 'ie ie9', 'ie ie10', 'ie ie11'.
fuente
Puede buscar esta información en
$_SERVER['HTTP_USER_AGENT']
, pero su formato es libre, no se garantiza que se envíe y el usuario podría modificarlo fácilmente, ya sea por motivos de privacidad o por otras razones.Si no ha establecido la
browsecap
directiva, esto devolverá una advertencia. Para asegurarse de que esté configurado, puede recuperar el valor usandoini_get
y ver si está configurado.Como explicó kba en su respuesta, su navegador envía mucha información al servidor mientras carga una página web. La mayoría de los sitios web utilizan esta información de agente de usuario para determinar el sistema operativo del visitante, el navegador y diversa información.
fuente