OPiMedia

get_os

Feb 2nd, 2013
115
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.   Deux fonctions PHP pour obtenir le nom de l'OS
  3.   en réaction à l'article "Fonction de détection d'OS en PHP"
  4.   http://www.agencevolt.fr/blog/fonction-de-detection-dos-en-php/
  5.   du blog de l'Agence Volt
  6.  
  7.   Par Olivier Pirson --- http://www.opimedia.be/
  8. */
  9.  
  10.  
  11. /**
  12.  * Renvoie le nom de l'OS
  13.  *
  14.  * @return: string|null
  15.  */
  16. function get_os() {
  17.   $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
  18.  
  19.   foreach (array('win'        => 'Windows',
  20.                  'linux'      => 'Linux',
  21.                  'mac'        => 'Macintosh',
  22.                  'freebsd'    => 'FreeBSD',
  23.                  'sunos'      => 'SunOS',
  24.                  'beos'       => 'BeOS',
  25.                  'os/2'       => 'OS/2',
  26.                  'aix'        => 'AIX',
  27.                  'qnx'        => 'QNX',
  28.                  'iphone'     => 'iPhone',
  29.                  'ipad'       => 'iPad',
  30.                  'openbsd'    => 'OpenBSD',
  31.                  'netbsd'     => 'NetBSD',
  32.                  'android'    => 'Android',
  33.                  'playbook'   => 'PlayBook',
  34.                  'blackberry' => 'BlackBerry') as $key => $os) {
  35.     if ( strpos($agent, $key) !== false ) {
  36.       return $os;
  37.     }
  38.   }
  39.  
  40.   return null;
  41. }
  42.  
  43.  
  44. /**
  45.  * Renvoie le nom de l'OS
  46.  *
  47.  * @return: string|null
  48.  */
  49. function get_os_regexp() {
  50.   $os = array('win'        => 'Windows',
  51.               'linux'      => 'Linux',
  52.               'mac'        => 'Macintosh',
  53.               'freebsd'    => 'FreeBSD',
  54.               'sunos'      => 'SunOS',
  55.               'beos'       => 'BeOS',
  56.               'os/2'       => 'OS/2',
  57.               'aix'        => 'AIX',
  58.               'qnx'        => 'QNX',
  59.               'iphone'     => 'iPhone',
  60.               'ipad'       => 'iPad',
  61.               'openbsd'    => 'OpenBSD',
  62.               'netbsd'     => 'NetBSD',
  63.               'android'    => 'Android',
  64.               'playbook'   => 'PlayBook',
  65.               'blackberry' => 'BlackBerry');
  66.  
  67.   $matches = array();
  68.  
  69.   // Cf. http://www.php.net/manual/fr/function.preg-match.php
  70.   return (preg_match('#('.implode('|', array_keys($os)).')#',
  71.                      strtolower($_SERVER['HTTP_USER_AGENT']),
  72.                      $matches)
  73.           ? $os[$matches[0]]
  74.           : null);
  75. }
  76.  
  77.  
  78. echo get_os();
  79.  
  80. echo get_os_regexp();
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×