Easiest Way OS Detection With PHP?

后端 未结 3 1710
日久生厌
日久生厌 2020-12-10 05:58

I\'m trying to figure out the visitor\'s OS is either a Windows, Mac or Linux using PHP(I don\'t need the version, distro info.. etc). There\'s several methods out there how

相关标签:
3条回答
  • 2020-12-10 06:30
    <?php
    
    $agent = $_SERVER['HTTP_USER_AGENT'];
    
    if(preg_match('/Linux/',$agent)) $os = 'Linux';
    elseif(preg_match('/Win/',$agent)) $os = 'Windows';
    elseif(preg_match('/Mac/',$agent)) $os = 'Mac';
    else $os = 'UnKnown';
    
    
    echo $os;
    
    ?>
    
    0 讨论(0)
  • 2020-12-10 06:30

    use the Net_UserAgent package

    docu is here: http://pear.php.net/package/Net_UserAgent_Detect/docs/latest/Net_UserAgent/Net_UserAgent_Detect.html#methodgetOSString

    get the php file here: package/Net_UserAgent_Detect/docs/latest/__filesource/fsource_Net_UserAgent__Net_UserAgent_Detect-2.5.1Detect.php.html

    0 讨论(0)
  • 2020-12-10 06:34

    For an easy solution have a look here. The user-agent header might reveal some OS information, but i wouldn't count on that.

    For your use case i would do an ajax call using javascript from the client side to inform your server of the client's OS. And do it waterproof.

    Here is an example.

    Javascript (client side, browser detection + ajax call ):

    window.addEvent('domready', function() { 
      if (BrowserDetect) { 
        var q_data = 'ajax=true&browser=' + BrowserDetect.browser + '&version=' + BrowserDetect.version + '&os=' + BrowserDetect.OS; 
        var query = 'record_browser.php' 
        var req = new Request.JSON({url: query, onComplete: setSelectWithJSON, data: q_data}).post(); 
      } 
    }); 
    

    PHP (server side):

    if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
        $session = session_id(); 
        $user_id = isset($user_id) ? $user_id : 0; 
        $browser = isset($_POST['browser']) ? $_POST['browser'] : ''; 
        $version = isset($_POST['version']) ? $_POST['version'] : ''; 
        $os = isset($_POST['os']) ? $_POST['os'] : ''; 
    
        // now do here whatever you like with this information
    } 
    
    0 讨论(0)
提交回复
热议问题