2011-02-28 67 views
1

我正在開發一個網站,因爲某些安全原因,我想禁止在IE 6.0瀏覽器中打開。我知道每個瀏覽器都有一個唯一的標題信息,當我們請求網頁時發送,所以我可以阻止我的網站在IE 6.0或任何瀏覽器中使用javascript,php或使用任何東西?禁止打開網站的Internet Explorer 6.0瀏覽器?

回答

1

當然,檢查this out(CGI方法,PHP方法,JS方法)
PHP:

<?php 
    if (eregi("MSIE",getenv("HTTP_USER_AGENT")) || 
     eregi("Internet Explorer",getenv("HTTP_USER_AGENT"))) { 
    Header("Location: http://www.domain.com/ie_reject.html"); 
    exit; 
    } 
?> 

JS:

<!-- 
if (navigator.appName == "Microsoft Internet Explorer") { 
     document.location = "http://www.domain.com/ie_reject.shtml"; 
} else { 
     document.location = "http://www.domain.com/realhomepage.html"; 
} 
// --> 
+0

謝謝你的PHP是更好的選擇..和工作! –

+0

,如果我想用Mozilla和鉻。我永遠不會 。做這個bt爲實踐目的wt我應該改變在上面的php代碼? –

+0

正如您在eregi()的PHP手冊頁上發現的那樣,PHP 5.3已被棄用,並且不鼓勵繼續使用。相反,你應該使用'preg_match()'或者更簡單的'strpos()'來應用這樣的應用程序。 –

4
<!--[if (gt IE 6)|!(IE)]><!--> <html> Entire website? </html> <!--<![endif]--> 

認真不過,你可以使用IE條件註釋點菜HTML5 Boilerplate

<!doctype html> 
<!--[if lt IE 7 ]> <html lang="en-us" class="no-js ie6"> <![endif]--> 
<!--[if IE 7 ]> <html lang="en-us" class="no-js ie7"> <![endif]--> 
<!--[if IE 8 ]> <html lang="en-us" class="no-js ie8"> <![endif]--> 
<!--[if IE 9 ]> <html lang="en-us" class="no-js ie9"> <![endif]--> 
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en-us" class="no-js"> <!--<![endif]--> 
<head> 
    <meta http-equiv="X-UA-Compatible" content="IE=Edge;chrome=1" > 
    <meta charset="utf-8"> 
    ... 
+1

因爲它只適用於互聯網瀏覽器,所以不會工作。你應該使用低級可見的評論。在IE 6的特別說明

+1

@Joe:好點 - 固定 – rsp

0

真正的答案是:你不能。頭部中的某個UA太容易被惡意使用,出於安全原因,如果有人想在不允許的應用上使用IE6,可以使用一個簡單的代理來完成它,讓應用思考它是IE8。

這就是說,你可以使用get_browser函數輕鬆地在PHP中完成它。

http://php.net/get_browser

+0

這主要依賴於主機服務器的browsercap.ini文件,它根本不可靠...... –

+1

幸運的是,IE對於特殊的條件註釋非常友善,所以'<! - [if(gt IE 6)|! (IE)]>'這會呈現在除IE6以外的所有內容'<! - ' - 無需依賴標頭。 – rsp

+0

不過,可以通過實現刪除這些條件註釋的代理來解決這個問題。我並不認同很多漂亮的解決方案,但是從安全角度考慮這個問題,應該考慮到這一點。 –

3

你可以使用這樣的條件註釋。

<!--[if IE 6]> 
Special instructions for IE 6 here 
<![endif]--> 

的Internet Explorer 6的未修改版本將運行這段代碼,其他瀏覽器則不會。但是我不知道這是否滿足您的安全考慮。一切都可以僞造。

,你也可以檢查報頭信息,但其同樣的問題...

請告訴我們更多關於你正在試圖在這裏做。

4

對於IE來說很容易,因爲微軟添加了特殊標籤,您可以檢測到哪些IE版本。它比嘗試使用User-Agent標題更可靠。像這樣的東西應該工作(在你的HTML的頭部)

<!--[if lte IE 6]> 
<meta http-equiv="refresh" content="0;url=http://yoursite.com/ie6_is_a_steaming_pile.html"> 
<[endif]--> 

顯然有自己的網站,並可能是一些比較委婉;-)

2

一些簡單的PHP替代鏈接,您可以包括在每一頁上抓住MSIE用戶:

if(preg_match('/MSIE/i',$_SERVER['HTTP_USER_AGENT'])){ 
    die('Your browser is not allowed'); 
} 

還有很多其他更復雜和全面的方式,你可以做到這一點。

1

如果你真的想這樣做......

在PHP:

if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE 6")) { 
    // exit or redirect or whatever... 

    exit(); 
} 
0

我會說:這樣做的權利!有專門的課程,跟蹤所有瀏覽器和設備的所有USER_AGENTS,創建它們的數據庫並將其整合到您的工作會話例程中。每次用戶進來,確定他的用戶代理信息[類型,名稱和版本],然後將數據傳遞到您的顯示例程,這應該確定要打印的內容和設計模板。這樣,你可以建立一個網站,這是一個搜索引擎優化友好,用戶友好,整潔,易於組織[=開發人員友好] - 一個,這是一個非常罕見的事情在今天的互聯網偶然發現... ...所以,做對!

+0

沒有必要依賴User-Agent頭部或根本不使用任何類型的服務器端甚至客戶端腳本。你可以用簡單的舊靜態HTML來完成。請參閱我的回答和其他有關條件評論。 – rsp

1

更新,並在同一時間給他們一個教訓:

http://ie6update.com/

好了,所以它不會阻止他們完全脫離。但它可能會欺騙一些人擺脫稱爲IE6的邪惡禍害。幫助微軟!

+0

我其實更喜歡讓人們安裝[Chrome Frame](http://www.google.com/chromeframe)而不是IE7或IE8,這比安裝新的瀏覽器更容易,結果實際上更好(甚至更好IE8完全不能通過Acid3測試)。 – rsp

+0

我不反對,除了測試以外,我不碰IE。我只是想知道我在「欺騙」人們放棄他們心愛的恐龍......這讓我開心! – bpeterson76

相關問題