SHARE
TWEET

get_os

OPiMedia Feb 2nd, 2013 33 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
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top