2013-04-06 18 views
8

Ich habe in letzter Zeit eine Menge Googling gemacht, um zu versuchen, ein einfaches, einfaches PHP-Skript zu finden, das erkennt, ob der Benutzer auf einem Mac ist oder nicht.Ermitteln, ob das Betriebssystem Mac ist

Ich möchte dies verwenden, um den Benutzern zu sagen, ob die Tastenkombination, die ich ihnen sage, "Kontrolle" oder "Befehl" ist. Ich brauche den Browser oder irgendetwas nicht, nur wenn der Computer ein Mac ist. Hier

eine übersicht der Güter, was ich frage ist möglich:

if (operating_system == Mac) 
{ 
    echo "command"; 
} 
else 
{ 
    echo "control"; 
} 

Antwort

16

Erstellen Sie eine Seite: identifier.php

<?php 
$user_agent = getenv("HTTP_USER_AGENT"); 

if(strpos($user_agent, "Win") !== FALSE) 
$os = "Windows"; 
elseif(strpos($user_agent, "Mac") !== FALSE) 
$os = "Mac"; 
?> 

es dann auf den Kopf Ihrer Website enthalten.

Danach können Sie es wie folgt verwendet werden:

<?php 
if($os === "Windows") 
{ 

} 
elseif($os === "Mac") 
{ 

} 
?> 

Edit:

für Windows Phone:

if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows phone os') > 0) { 
    $mobile_browser = 1; 
    } 
+1

Vielen Dank! Das hat perfekt funktioniert. :) – totallyuneekname

+0

Gut zu wissen, dass es geholfen hat :) –

+0

Dieser Code erkennt alle iOS-Geräte als Mac, weil sie alle "wie Mac OS X" in ihren UA enthalten. Stattdessen sollten Sie nach "Macintosh" anstelle von "Mac" suchen. – kremalicious

1

Versuchen Sie, die get_browser() Funktion, die in PHP integriert ist.

$browser = get_browser(null, true); 
echo "Platform: " . $browser["platform"] . "\n"; 
+0

Dank so schnell antworten! Um die Wahrheit zu sagen, ich bin ziemlich neu in PHP. Macht es Ihnen etwas aus, das in ein if-Statement-Format für mich zu bringen? Vielen Dank – totallyuneekname

+0

Hinweis: Dies funktioniert nur, wenn browscap in php.ini eingestellt ist und die browscap auch vorhanden ist. Meiner Erfahrung nach ist das nicht sehr häufig. – Ares

+0

@ user2180108 get_browser() benötigt browsecap.ini für volle Funktionalität. Dies erfordert Ihre Verwaltung Eingabe .. Verwenden Sie die URL zur Verfügung gestellt, um über get_browser lesen, und gehen Sie hier: http://tempdownloads.browserscap.com/ für browsecap.ini –

1

Werfen Sie einen Blick auf http://ellislab.com/codeigniter/user-guide/libraries/user_agent.html

Per Detect exact OS version from browser Kurze Antwort: Genau das können Sie nicht.

Lange Antwort:

Alles, was Sie haben, ist die Information in der HTTP-User-Agent-Header, der in der Regel die OS Namen und die Version enthält.

Normalerweise senden Browser unter Mac OS und Linux genügend Informationen, um das genaue Betriebssystem zu identifizieren. Zum Beispiel, hier ist mein User-Agent-Header:

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: 1.9.0.7) Gecko/2009030423 Ubuntu/8,10 (unerschrockenen) Firefox/3.0. 7

Sie können sehen, dass ich Ubuntu 8.10 Intrepid Ibex ausführen.

Und hier ist es, was Firefox und Safari 4 Beta Bericht auf meinem MacBook Pro:

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv: 1.9.0.7) Gecko/2009021906 Firefox/3.0.7

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528,16 (KHTML, wie Gecko) Version/4.0 Safari/528,16

Windows- Browser hingegen melden in der Regel nur die Betriebssystemversion und nicht das spezifische Paket (Pro, Geschäft, etc.):

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: xxx) Gecko/20041107 Firefox/xx

// dies wird Ihnen helfen

$uagent = $_SERVER['HTTP_USER_AGENT'] . "<br/>"; 

function os_info($uagent) 
{ 
    // the order of this array is important 
    global $uagent; 
    $oses = array(
     'Win311' => 'Win16', 
     'Win95' => '(Windows 95)|(Win95)|(Windows_95)', 
     'WinME' => '(Windows 98)|(Win 9x 4.90)|(Windows ME)', 
     'Win98' => '(Windows 98)|(Win98)', 
     'Win2000' => '(Windows NT 5.0)|(Windows 2000)', 
     'WinXP' => '(Windows NT 5.1)|(Windows XP)', 
     'WinServer2003' => '(Windows NT 5.2)', 
     'WinVista' => '(Windows NT 6.0)', 
     'Windows 7' => '(Windows NT 6.1)', 
     'Windows 8' => '(Windows NT 6.2)', 
     'WinNT' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)', 
     'OpenBSD' => 'OpenBSD', 
     'SunOS' => 'SunOS', 
     'Ubuntu' => 'Ubuntu', 
     'Android' => 'Android', 
     'Linux' => '(Linux)|(X11)', 
     'iPhone' => 'iPhone', 
     'iPad' => 'iPad', 
     'MacOS' => '(Mac_PowerPC)|(Macintosh)', 
     'QNX' => 'QNX', 
     'BeOS' => 'BeOS', 
     'OS2' => 'OS/2', 
     'SearchBot' => '(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)' 
    ); 
    $uagent = strtolower($uagent ? $uagent : $_SERVER['HTTP_USER_AGENT']); 
    foreach ($oses as $os => $pattern) 
     if (preg_match('/' . $pattern . '/i', $uagent)) 
      return $os; 
    return 'Unknown'; 
} 
echo os_info($uagent); 
1

Leider kann dies nicht wirklich sein erledigt.


Zum Zweck Ihre Frage zu beantworten zu weit, ohne in warum Sniffing User Agent hier gebrochen ist ein Code, der, was Sie tun wollen: für

$mactest = strpos($_SERVER["HTTP_USER_AGENT"], 'Macintosh') ? true : false; 

if($mactest) { 
    do something 
} else { 
    do something else 
} 
5
<?php 

    function getBrowserOS() { 

     $user_agent  = $_SERVER['HTTP_USER_AGENT']; 
     $browser  = "Unknown Browser"; 
     $os_platform = "Unknown OS Platform"; 

     // Get the Operating System Platform 

      if (preg_match('/windows|win32/i', $user_agent)) { 

       $os_platform = 'Windows'; 

       if (preg_match('/windows nt 6.2/i', $user_agent)) { 

        $os_platform .= " 8"; 

       } else if (preg_match('/windows nt 6.1/i', $user_agent)) { 

        $os_platform .= " 7"; 

       } else if (preg_match('/windows nt 6.0/i', $user_agent)) { 

        $os_platform .= " Vista"; 

       } else if (preg_match('/windows nt 5.2/i', $user_agent)) { 

        $os_platform .= " Server 2003/XP x64"; 

       } else if (preg_match('/windows nt 5.1/i', $user_agent) || preg_match('/windows xp/i', $user_agent)) { 

        $os_platform .= " XP"; 

       } else if (preg_match('/windows nt 5.0/i', $user_agent)) { 

        $os_platform .= " 2000"; 

       } else if (preg_match('/windows me/i', $user_agent)) { 

        $os_platform .= " ME"; 

       } else if (preg_match('/win98/i', $user_agent)) { 

        $os_platform .= " 98"; 

       } else if (preg_match('/win95/i', $user_agent)) { 

        $os_platform .= " 95"; 

       } else if (preg_match('/win16/i', $user_agent)) { 

        $os_platform .= " 3.11"; 

       } 

      } else if (preg_match('/macintosh|mac os x/i', $user_agent)) { 

       $os_platform = 'Mac'; 

       if (preg_match('/macintosh/i', $user_agent)) { 

        $os_platform .= " OS X"; 

       } else if (preg_match('/mac_powerpc/i', $user_agent)) { 

        $os_platform .= " OS 9"; 

       } 

      } else if (preg_match('/linux/i', $user_agent)) { 

       $os_platform = "Linux"; 

      } 

      // Override if matched 

       if (preg_match('/iphone/i', $user_agent)) { 

        $os_platform = "iPhone"; 

       } else if (preg_match('/android/i', $user_agent)) { 

        $os_platform = "Android"; 

       } else if (preg_match('/blackberry/i', $user_agent)) { 

        $os_platform = "BlackBerry"; 

       } else if (preg_match('/webos/i', $user_agent)) { 

        $os_platform = "Mobile"; 

       } else if (preg_match('/ipod/i', $user_agent)) { 

        $os_platform = "iPod"; 

       } else if (preg_match('/ipad/i', $user_agent)) { 

        $os_platform = "iPad"; 

       } 

     // Get the Browser 

      if (preg_match('/msie/i', $user_agent) && !preg_match('/opera/i', $user_agent)) { 

       $browser  = "Internet Explorer"; 

      } else if (preg_match('/firefox/i', $user_agent)) { 

       $browser  = "Firefox"; 

      } else if (preg_match('/chrome/i', $user_agent)) { 

       $browser  = "Chrome"; 

      } else if (preg_match('/safari/i', $user_agent)) { 

       $browser  = "Safari"; 

      } else if (preg_match('/opera/i', $user_agent)) { 

       $browser  = "Opera"; 

      } else if (preg_match('/netscape/i', $user_agent)) { 

       $browser  = "Netscape"; 

      } 

      // Override if matched 

       if ($os_platform == "iPhone" || $os_platform == "Android" || $os_platform == "BlackBerry" || $os_platform == "Mobile" || $os_platform == "iPod" || $os_platform == "iPad") { 

        if (preg_match('/mobile/i', $user_agent)) { 

         $browser = "Handheld Browser"; 

        } 

       } 

     // Create a Data Array 

      return array(
       'browser'  => $browser, 
       'os_platform' => $os_platform 
      ); 

    } 


    $user_agent  = getBrowserOS(); 

    $device_details = "<strong>Browser: </strong>".$user_agent['browser']."<br /><strong>Operating System: </strong>".$user_agent['os_platform'].""; 

    print_r($device_details); 

    echo("<br /><br /><br />".$_SERVER['HTTP_USER_AGENT'].""); 

    ?> 
3
function getUserOS(){ 
$osList = array 
(
    'Windows 7' => 'windows nt 6.1', 
    'Windows Vista' => 'windows nt 6.0', 
    'Windows Server 2003' => 'windows nt 5.2', 
    'Windows XP' => 'windows nt 5.1', 
    'Windows 2000 sp1' => 'windows nt 5.01', 
    'Windows 2000' => 'windows nt 5.0', 
    'Windows NT 4.0' => 'windows nt 4.0', 
    'Windows Me' => 'win 9x 4.9', 
    'Windows 98' => 'windows 98', 
    'Windows 95' => 'windows 95', 
    'Windows CE' => 'windows ce', 
    'Windows (version unknown)' => 'windows', 
    'OpenBSD' => 'openbsd', 
    'SunOS' => 'sunos', 
    'Ubuntu' => 'ubuntu', 
    'Linux' => '(linux)|(x11)', 
    'Mac OSX Beta (Kodiak)' => 'mac os x beta', 
    'Mac OSX Cheetah' => 'mac os x 10.0', 
    'Mac OSX Puma' => 'mac os x 10.1', 
    'Mac OSX Jaguar' => 'mac os x 10.2', 
    'Mac OSX Panther' => 'mac os x 10.3', 
    'Mac OSX Tiger' => 'mac os x 10.4', 
    'Mac OSX Leopard' => 'mac os x 10.5', 
    'Mac OSX Snow Leopard' => 'mac os x 10.6', 
    'Mac OSX Lion' => 'mac os x 10.7', 
    'Mac OSX (version unknown)' => 'mac os x', 
    'Mac OS (classic)' => '(mac_powerpc)|(macintosh)', 
    'QNX' => 'QNX', 
    'BeOS' => 'beos', 
    'OS2' => 'os/2', 
    'SearchBot'=>'(nuhk)|(googlebot)|(yammybot)|(openbot)|(slurp)|(msnbot)|(ask jeeves/teoma)|(ia_archiver)' 
); 

$useragent = $_SERVER['HTTP_USER_AGENT']; 
$useragent = strtolower($useragent); 

foreach($osList as $os=>$match) { 
    if (preg_match('/' . $match . '/i', $useragent)) { 
     break; 
    } 
    else 
    { 
     //$os = "Not automatically detected.<br />$useragent"; 
     $os = "unknown"; 
    } 
} 

return $os; 
} 
Verwandte Themen