2012-11-19 100 views
0

我不知道我在做什麼錯,但腳本不會檢查正確的瀏覽器。PHP瀏覽器檢查腳本

<? 
    class rbc_BrowserInfo { 

     public $browser = ""; 
     public $os = ""; 
     public $lang = ""; 
     public $mobile = 0; 

     public function getBrowserInfo() { 
      if (preg_match('/MSIE/i',$_SERVER['HTTP_USER_AGENT'])) $this->browser = 'ie'; 
      if (preg_match('/Internet Explorer/i',$_SERVER['HTTP_USER_AGENT'])) $this->browser = 'ie'; 
      if (preg_match('/Firefox/i',$_SERVER['HTTP_USER_AGENT'])) $this->browser = 'firefox'; 
      if (preg_match('/Mozilla/i',$_SERVER['HTTP_USER_AGENT'])) $this->browser = 'firefox'; 
      if (preg_match('/Opera/i',$_SERVER['HTTP_USER_AGENT'])) $this->browser = 'opera'; 
      if (preg_match('/Safari/i',$_SERVER['HTTP_USER_AGENT'])) $this->browser = 'safari'; 
      if (preg_match('/Chrome/i',$_SERVER['HTTP_USER_AGENT'])) $this->browser = 'chrome'; 
      if (preg_match('/Camino/i',$_SERVER['HTTP_USER_AGENT'])) $this->browser = 'camino'; 
      if (preg_match('/Konqueror/i',$_SERVER['HTTP_USER_AGENT'])) $this->browser = 'konqueror'; 


      if (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone)/i', strtolower($_SERVER['HTTP_USER_AGENT'])) || (strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml')>0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) { 
       $this->mobile = 1; 
      } 


      $os_arr = array ('windows' => '(Windows)|(Win)', 'linux'=>'(linux)|(X11)', 'mac'=>'(Mac_PowerPC)|(Macintosh)|(Mac)'); 
      $this->os = 'other'; 
      foreach($os_arr as $os=>$ospattern) { 
       if (eregi($ospattern, $_SERVER['HTTP_USER_AGENT'])) 
       $this->os = $os; 
      } 

      $this->lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); 
     } 
    } 

    $browserinfo = new rbc_BrowserInfo(); 
    $browserinfo -> getBrowserInfo(); 

    /* EXAMPLES */ 
    if ($browserinfo->lang!="de") { 
     header("Location: index.php?language=de"); /* Browser umleiten falls Sprache nicht Englisch ist */ 
     exit; 
    } 

    // or 
    if ($browserinfo->mobile==1) { 
     header("Location: http://mobile.example.com/"); /* Browser umleiten */ 
     exit; 
    } 

    /* // or 
    if ($browserinfo->browser=="ie"){ 
     echo 'Du surfst mit Safari'; 
    } 
    else { 
     echo 'Du surfst nicht mit Safari'; 
    } */ 

    if ($browserinfo->browser=="ie") { 
    echo '<div class="error">Dude..Get Firefox</div>'; 
} 
?> 

如果我的部分更改爲

if ($browserinfo->browser!="ie"){ 

比所有瀏覽器中得到的消息。但如果代碼回到

if ($browserinfo->browser=="ie"){ 

甚至比Internet Explorer不會得到通知

回答

0

只是爲了在這裏調試,如果你對firefox的檢查做同樣的事情,它能正常工作嗎?

+0

Firefox,Safari,Chrome,Opera正在運行,但只有IE不顯示消息。 – karabey

+0

沒有人可以回答我? – karabey

0

使用MSIE而不是IE,我相信應該工作。它在我所有的網站上都有。