2010-08-09 12 views
9

प्राप्त करें मैंने इस के लिए गोगलिंग पर एक दिन बिताया है; अब तक कोई भाग्य नहीं है।उपयोगकर्ता ओएस और संस्करण संख्या

मैं उपयोगकर्ता ओएस और संस्करण कैसे प्राप्त कर सकता हूं। मेरा मैक ओएस एक्स 10.6.4 होगा, कार्यालय में अतिरिक्त पीसी विंडोज एक्सपी एसपी 3 होगा। आप देखते हैं कि मैं क्या प्राप्त कर रहा हूं।

मैंने उपयोगकर्ता मंच को अकेले पाने के लिए दस लाख और एक तरीके देखा है, बस संस्करण नहीं।

जेएस आदर्श होगा, लेकिन एक सर्वर-साइड (PHP) समाधान ठीक है।

+3

बस याद रखें, ग्राहक से कुछ भी भरोसा न करें। तो अगर आपको ओएस एक्स 10.6.4 "पता चला" है, तो आपको पता नहीं है कि यह सही है ... – ircmaxell

उत्तर

1

आपके द्वारा देखे जाने वाले सभी सर्वर साइड समाधान वास्तव में अनुरोध में उपयोगकर्ता-एजेंट स्ट्रिंग का उपयोग करने के लिए उबाल लेंगे।

क्लाइंट साइड (जेएस) पर काम करने से ब्राउज़र/ओएस के साथ सीधे बातचीत करने में सक्षम होने का लाभ होता है। उदाहरण के लिए, jQuery's browser function - जो आपको चाहिए वही हो सकता है - यह देखने के लिए कि यह कैसे प्रतिक्रिया करता है, डीओएम/ब्राउज़र पर परीक्षणों की एक श्रृंखला चलाता है, और उसके बाद उन प्रतिक्रियाओं के आधार पर ब्राउज़र प्रकार और संस्करण निर्धारित करता है। ओएस पहचान को शामिल करने के लिए jQuery के ब्राउज़र फ़ंक्शन को बढ़ाने के लिए कुछ प्रोजेक्ट्स रहे हैं, लेकिन मैंने पहले उनका उपयोग नहीं किया है; एक त्वरित Google खोज के साथ आसानी से मिला।

चीयर्स।

1

नेटवर्क जांच करने के अलावा आपके पास एकमात्र संकेत है, जो कि भी विश्वसनीय नहीं है, उपयोगकर्ता-एजेंट शीर्षलेख की जांच करना है, लेकिन आप इस पर भरोसा नहीं कर सकते हैं, या तो कोई भी इसे संशोधित कर सकता है डिफ़ॉल्ट हेडर जो उसका ब्राउज़र भेजता है।

2

नीचे दिए गए लिंक में ओएस का पता लगाने के लिए नीचे जावास्क्रिप्ट कोड प्रतीत होता है। बोनस के रूप में इसमें कुछ अन्य सुविधाएं हैं जैसे ब्राउज़र प्रकार और संस्करण पहचान भी।

http://www.quirksmode.org/js/detect.html

HTH

+0

मेरे मैक पर, 'navigator.oscpu' एक पीसी पर 'इंटेल मैक ओएस एक्स 10.6' देता है, यह कुछ भी नहीं देता है। शर्म की बात है, क्योंकि यह वही है जो मैं चाहता हूं! – PaulAdamDavis

3

में आप $ _SERVER सरणी में HTTP_USER_AGENT फ़ील्ड का उपयोग कर सकते हैं। उदाहरण के लिए, निम्न कोड iPhone और Android उपयोगकर्ताओं का पता लगाने और उन्हें एक अलग स्थान (जैसे, iTunes App Store या Android मार्केट प्लेस) पर रीडायरेक्ट करेगा:

$http_user_agent = $_SERVER['HTTP_USER_AGENT']; 

if (stristr($http_user_agent, "android") != FALSE) { 
    header("Location: " . ANDROID_REDIRECT); 
} 
else if (stristr($http_user_agent, "iphone") != FALSE) { 
    header("Location: " . IOS_REDIRECT); 
} 
else { 
    header("Location: " . DEFAULT_REDIRECT); 
} 

ध्यान दें कि ANDROID_REDIRECT, IOS_REDIRECT, और DEFAULT_REDIRECT के साथ परिभाषित स्थिरांक हैं PHP 'define' function

19
<?php 

$user_agent  = $_SERVER['HTTP_USER_AGENT']; 

function getOS() { 

    global $user_agent; 

    $os_platform = "Unknown OS Platform"; 

    $os_array  = array(
          '/windows nt 6.2/i'  => 'Windows 8', 
          '/windows nt 6.1/i'  => 'Windows 7', 
          '/windows nt 6.0/i'  => 'Windows Vista', 
          '/windows nt 5.2/i'  => 'Windows Server 2003/XP x64', 
          '/windows nt 5.1/i'  => 'Windows XP', 
          '/windows xp/i'   => 'Windows XP', 
          '/windows nt 5.0/i'  => 'Windows 2000', 
          '/windows me/i'   => 'Windows ME', 
          '/win98/i'    => 'Windows 98', 
          '/win95/i'    => 'Windows 95', 
          '/win16/i'    => 'Windows 3.11', 
          '/macintosh|mac os x/i' => 'Mac OS X', 
          '/mac_powerpc/i'  => 'Mac OS 9', 
          '/linux/i'    => 'Linux', 
          '/ubuntu/i'    => 'Ubuntu', 
          '/iphone/i'    => 'iPhone', 
          '/ipod/i'    => 'iPod', 
          '/ipad/i'    => 'iPad', 
          '/android/i'   => 'Android', 
          '/blackberry/i'   => 'BlackBerry', 
          '/webos/i'    => 'Mobile' 
         ); 

    foreach ($os_array as $regex => $value) { 

     if (preg_match($regex, $user_agent)) { 
      $os_platform = $value; 
     } 

    } 

    return $os_platform; 

} 

function getBrowser() { 

    global $user_agent; 

    $browser  = "Unknown Browser"; 

    $browser_array = array(
          '/msie/i'  => 'Internet Explorer', 
          '/firefox/i' => 'Firefox', 
          '/safari/i'  => 'Safari', 
          '/chrome/i'  => 'Chrome', 
          '/opera/i'  => 'Opera', 
          '/netscape/i' => 'Netscape', 
          '/maxthon/i' => 'Maxthon', 
          '/konqueror/i' => 'Konqueror', 
          '/mobile/i'  => 'Handheld Browser' 
         ); 

    foreach ($browser_array as $regex => $value) { 

     if (preg_match($regex, $user_agent)) { 
      $browser = $value; 
     } 

    } 

    return $browser; 

} 


$user_os  = getOS(); 
$user_browser = getBrowser(); 

$device_details = "<strong>Browser: </strong>".$user_browser."<br /><strong>Operating System: </strong>".$user_os.""; 

print_r($device_details); 

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

?> 
+0

ब्राउज़र क्रोम के लिए असफल होगा, नहीं? क्रोम में इसके उपयोगकर्ता एजेंट पर 'सफारी' और 'क्रोम' दोनों हैं। उदा: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, छिपकली की तरह) क्रोम/31.0.1625.2 सफारी/537.36' – RaphaelDDL

+0

@Gaurang यह स्क्रिप्ट वास्तव में मुझे मदद मिली। इसके बारे में एक सवाल: मैं ओएस एक्स मैवरिक्स का उपयोग करता हूं और यह "अज्ञात ओएस प्लेटफॉर्म" देता है। कोई विचार क्यों और कैसे मैं इसे ठीक कर सकता हूं? –

संबंधित मुद्दे