← Tutoriais

[PHP] Detectar Sistema Operativo

Lida 3364 vezes

Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Um pequeno código para detectar o sistema operativo do utilizador.
Se possivel agradecia que me reportassem quaisquer erros na validação do SO determinada pelo script, para assim os poder corrigir. Obrigado.

Código: [Seleccione]
<?php
/////////////////////////////////////////////////////////////////////////////
//                        Detectar Sistema Operativo                       //
//                       Elaborado por =IceBurn= 2006                      //
//               * * * * * * *  WWW.TENHAMEDO.NET * * * * * * *            //
/////////////////////////////////////////////////////////////////////////////                                                                  

$user_agent $_SERVER['HTTP_USER_AGENT'&#93;;
     
  if &#40;preg_match&#40;"/Windows 95/i", $user_agent&#41;&#41;     $so = "Windows 95";
 
else if &#40;preg_match&#40;"/Win95/i", $user_agent&#41;&#41;     $so = "Windows 95";
 
else if &#40;preg_match&#40;"/Win98/i", $user_agent&#41;&#41;     $so = "Windows 98";
 
else if &#40;preg_match&#40;"/Windows ME/i", $user_agent&#41;&#41;     $so = "Windows ME";
 
else if &#40;preg_match&#40;"/Windows 98/i", $user_agent&#41;&#41;     $so = "Windows 98";
 
else if &#40;preg_match&#40;"/Win 9x 4.90/i", $user_agent&#41;&#41; $so = "Windows ME";
 
else if &#40;preg_match&#40;"/Windows 2000/i", $user_agent&#41;&#41; $so = "Windows 2000";
 
else if &#40;preg_match&#40;"/Windows NT 5.0/i", $user_agent&#41;&#41; $so = "Windows 2000";
 
else if &#40;preg_match&#40;"/Windows XP/i", $user_agent&#41;&#41;     $so = "Windows XP";
 
else if &#40;preg_match&#40;"/Windows NT 5.1/i", $user_agent&#41;&#41; $so = "Windows XP";
 
else if &#40;preg_match&#40;"/Windows NT 5.2/i", $user_agent&#41;&#41; $so = "Windows XP x64 Edition";
 
else if &#40;preg_match&#40;"/Windows NT 6.0/i", $user_agent&#41;&#41; $so = "Windows Vista";
 
else if &#40;preg_match&#40;"/Windows NT/i", $user_agent&#41;&#41;  $so = "Windows NT";
 
else if &#40;preg_match&#40;"/WinNT/i", $user_agent&#41;&#41;          $so = "Windows NT";
 
else if &#40;preg_match&#40;"/Windows CE/i", $user_agent&#41;&#41;     $so = "Windows Mobile";
 
else if &#40;preg_match&#40;"/Linux/i", $user_agent&#41;&#41;          $so = "Linux";
 
else if &#40;preg_match&#40;"/FreeBSD/i", $user_agent&#41;&#41;      $so = "BSD";
 
else if &#40;preg_match&#40;"/OpenBSD/i", $user_agent&#41;&#41;      $so = "BSD";
 
else if &#40;preg_match&#40;"/BSD/i", $user_agent&#41;&#41;      $so = "BSD";
 
else if &#40;preg_match&#40;"/SunOS/i", $user_agent&#41;&#41;          $so = "Solaris";
 
else if &#40;preg_match&#40;"/Mac OS X/i", $user_agent&#41;&#41;       $so = "Mac OS X";
 
else if &#40;preg_match&#40;"/Mac_PowerPC/i", $user_agent&#41;&#41;  $so = "Mac OS";
 
else if &#40;preg_match&#40;"/Macintosh/i", $user_agent&#41;&#41;      $so = "Mac OS";
 
else if &#40;preg_match&#40;"/Mac/i", $user_agent&#41;&#41;      $so = "Mac OS";
 
else                              $so "Desconhecido"

echo 
$so;
?>

##################################################################################
Offline

OFFICER 
Membro
Mensagens 2076 Gostos 0
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Grande lista, muito bem! :)
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Thanks Officer.
Infelizmente a string user agent varia de navegador para nevegador, caso contrário poderia ter posto a identificar outras versões do XP.
Não é que não desse para faze-lo, mas atrasaria um pouco a rapidez de execução do código pois teria que primeiro identificar o navegador que não são tão poucos como isso e alem disso tambem não estava com muita paciencia para o fazer :lol:
Apesar disso, penso que o essencial está feito e já deu um certo trabalho a fazer pois tive que pesquisar os vários User Agent.