2014-02-18 24 views
3

IE(版本),我發現這個代碼,通過PHP來檢測瀏覽器:如何執行瀏覽器檢測 - 在PHP

<?php 
$msie = strpos($_SERVER["HTTP_USER_AGENT"], 'MSIE') ? true : false; 
$firefox = strpos($_SERVER["HTTP_USER_AGENT"], 'Firefox') ? true : false; 
$safari = strpos($_SERVER["HTTP_USER_AGENT"], 'Safari') ? true : false; 
$chrome = strpos($_SERVER["HTTP_USER_AGENT"], 'Chrome') ? true : false; 
?> 

<?php 
//Firefox 
if ($firefox) { 
echo 'you are using Firefox!'; 
echo '<br />'; 
} 

// Safari or Chrome. Both use the same engine - webkit 
if ($safari || $chrome) { 
echo 'you are using a webkit powered browser'; 
echo '<br />'; 
} 

// IE 
if ($msie) { 
echo '<br>you are using Internet Explorer<br>'; 
echo '<br />'; 
}?> 

但代碼不包括IE的可能版本。 難道是這樣的:

// IE7 
if ($msie7) { 
echo '<br>you are using Internet Explorer 7<br>'; 
echo '<br />'; 
} 

有人能幫助我嗎?希望改進包括支持IE版本的代碼。

+0

打印此變量$ _ SERVER [「HTTP_USER_AGENT」],看看您可以解析它以顯示不同的消息 – Tommy

+0

警告:HTTP_USER_AGENT可以由請求網頁的客戶端操縱。所以不要完全中繼。 – bansi

+0

http://il1.php.net/get_browser - 也請查看評論。 – Amnon

回答

6

試試這個:

<?php 
    $ie6 = (ereg("MSIE 6", $_SERVER["HTTP_USER_AGENT"])) ? true : false; 
    $ie7 = (ereg("MSIE 7", $_SERVER["HTTP_USER_AGENT"])) ? true : false; 
    $ie8 = (ereg("MSIE 8", $_SERVER["HTTP_USER_AGENT"])) ? true : false; 

    if ($ie6 || $ie7 || $ie8) { 
     // Do fallback stuff that old browsers can do here 
     echo "You are using IE"; 
    } else { 
     // Do stuff that real browsers can handle here 
    } 
?> 
+9

我喜歡它,當你說'真正的瀏覽器'瀏覽器以外的IE瀏覽器 – asprin

+0

謝謝@ asprin –

+4

旁註:['ereg()'](http:// www。 php.net/ereg)從PHP 5.3.0開始,這個函數已經被拒絕了。依靠這個功能是非常不鼓勵的。 ['preg_match()'](http://www.php.net/preg_match)是這個函數的建議替代方案。 –

-1

沒有爲PHP知道照顧沒有可靠的方法,也不是,它的瀏覽器後,它調用。按照設計,服務器端語言沒有理由在執行代碼之前考慮您使用的瀏覽器。 $_SERVER['HTTP_USER_AGENT']是最好的墊片,變化頻繁,以至於你一定會讓它早晚把你搞砸。

你作爲一個Web開發人員只的目標應該是寫CSS和JS代碼,或者是跨瀏覽器兼容或使用條件<!--[if IE 8]><![endif]-->墊片這顯然已經下降了IE11反正...

在JS你需要在調用它之前檢查一個函數是否存在,或者確定在你的瀏覽器目標範圍內是否支持它的JS引擎是可用的。

這樣說的話,是有圖書館在那裏試圖破譯$_SERVER['HTTP_USER_AGENT']但信息源有缺陷,所以圖書館從你嘗試使用它的那一刻起是沒有用的。

下面是一些跨瀏​​覽器的CSS:

.someClass{ 
    -webkit-box-shadow: 0 0 5px black; 
    -moz-box-shadow: 0 0 5px black; 
    box-shadow:   0 0 5px black; 

    -webkit-transform: rotate(45deg); 
    -moz-transform: rotate(45deg); 
    -ms-transform: rotate(45deg); 
    -o-transform: rotate(45deg); 
    transform: rotate(45deg); 

    -webkit-border-radius: 4px; 
    -moz-border-radius: 4px; 
    border-radius: 4px; 

    /* IE supports nothing above? Too bad, it will ignore it */ 
} 
1

這個PHP功能完美的作品。但我不知道如何使PHP從diferents IE瀏覽器(版本),不同版本的「MSIE」的區分

<?php 
    if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE')){ 
     header('Location: http://www.domain.com') ; 
    } 
?> 

非常感謝

+3

這不會檢測到IE11。 http://msdn.microsoft.com/en-us/library/ie/bg182625(v=vs.85).aspx – redburn