2015-10-20 32 views
0

我有一個在localhost上的Internet Explorer版本8上工作的代碼。它在服務器(Filezilla)上不起作用。同樣的代碼不能在localhost上的Internet Explorer版本10上運行(filezilla)。我想要解決方案,以便它可以在本地主機上以及server.Code上的IE版本10上運行。代碼如下。爲什麼我的代碼在localhost上的Internet Explorer版本8上不是在服務器上,而是在Internet Explorer版本10上工作

<?php 
    function get_user_browser() { 
     $u_agent = $_SERVER['HTTP_USER_AGENT']; 
     $ub = ''; 
     if (preg_match('/MSIE/i', $u_agent)) { 
      $ub = "ie"; 
     } elseif (preg_match('/Firefox/i', $u_agent)) { 
      $ub = "firefox"; 
     } elseif (preg_match('/Safari/i', $u_agent)) { 
      $ub = "safari"; 
     } elseif (preg_match('/Chrome/i', $u_agent)) { 
      $ub = "chrome"; 
     } elseif (preg_match('/Flock/i', $u_agent)) { 
      $ub = "flock"; 
     } elseif (preg_match('/Opera/i', $u_agent)) { 
      $ub = "opera"; 
     } 

     return $ub; 
    } 

    //echo get_user_browser(); 
    $browser = get_user_browser(); 
    if ($browser == 'ie') { 
     echo "<script>alert('Your Browser is not compatible, Please Update the version')</script>"; 
     echo "<script>window.open('www.google.com','_self')</script>"; 
    } 
?> 
+0

它工作正常,在我的瀏覽 –

+2

你不能只是這樣做與https://modernizr.com/前端? – Chris

+0

像@Chris建議,請做這個前端。更好的是,你可以只用CSS來完成。檢測IE是一件微不足道的事情,不需要做後端。 –

回答

0

您可以使用內置函數get_browser()

鏈接:http://php.net/manual/de/function.get-browser.php

(請注意有實際browsercap.ini您的目錄 - 你會在鏈接中找到它以上)。

但是首先你應該檢查你的瀏覽器提供了哪些字符串,因爲大量的插件允許你的瀏覽器模仿(僞裝)另一個瀏覽器。 這將幫助您快速分析問題。

正如你可以在這裏看到: http://www.useragentstring.com/pages/Browserlist/MSIE作爲檢查參數是不是最好的方法,至少不會,如果你把它先在您的入住程序。

1

現在檢測IE是一件很簡單的事情,不需要這樣的碎紙錘。當然,你可以像這樣在後端檢查它。但是,讓我解釋爲什麼它不是最好的方法。

客戶端每次請求頁面時,都需要您花時間通過正則表達式來處理其瀏覽器名稱,而他可以輕鬆地自行檢查它。他是在他的機器上運行瀏覽器的人。

我會建議您讓用戶檢查自己是否爲他的瀏覽器優化了頁面。現在,它爲什麼可行?如果用戶欺騙你相信他們使用瀏覽器,他們不是,唯一的受害者是他們。這樣,您可以節省免費的處理時間。不是免費的東西真棒?

的問題可以通過只使用HTML,CSS和盒來解決:

CSS

#incompatibleBrowser { display:none; } 

HTML

<div id="incompatibleBrowser">Get a better browser! [link]</div> 
<!--[if IE]> 
    <link rel="stylesheet" type="text/css" href="ie.css" /> 
<![endif]--> 

這裏,ie.css將包含:

CSS

#incompatibleBrowser { display:block; } 
// other rules that you might find appropriate for IE users 
相關問題