2011-02-28 4 views

答えて

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

ありがとうございます。 –

+0

と、もし私がMozillaとchromeとしたいのなら。そんなことは絶対にしません 。上記のphtコードで変更する必要がありますか? –

+0

'eregi()'のPHPマニュアルページにあるように、PHP 5.3では非推奨となっており、引き続き使用することはお勧めしません。代わりに 'preg_match()'やもっと単純に 'strpos()'をこのようなアプリケーションに使うべきです。 –

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

冗談はさておき、あなたがラHTML5 BoilerplateàIEの条件付きコメントを使用することができます

<!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

インターネットエクスプローラでのみ動作するため、動作しません。そのために下位レベルの目に見えるコメントを使用する必要があります。 <! - [if IE 6]> IE 6の特別な手順はこちら

+1

@Joe:良い点 - 固定 – rsp

0

実際の答えは次のとおりです。ヘッダー内の特定のUAはセキュリティ上の理由からスプーフィングするのが簡単ではなく、誰かがIE6を使用したくない場合は、簡単なプロキシを使用してアプリを思考させることができますそれはIE8です。

つまり、PHPでget_browser関数を使って簡単に行えます。

は、あなたがこのような条件付きコメントを使用することができます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]--> 

インターネットエクスプローラ6の修正されていないバージョンではこのコードが実行され、他のブラウザではこのコードは実行されません。しかし、これがあなたのセキュリティ上の懸念を満たすかどうかはわかりません。すべてが偽造される可能性があります。

あなたも...

をヘッダ情報が、その同じ問題をチェックすることができますがここでやろうとしているものについての詳細を教えてください。

4

IEの場合、Microsoftは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

私が言う:RIGHTそれを行います!専用のクラスを用意し、そこにあるすべてのブラウザとデバイスのUSER_AGENTSをすべてトレースし、それらのデータベースを作成し、それを実際のセッションルーチンに統合します。ユーザが来るたびに、ユーザエージェント情報[タイプ、名前、バージョン]を決定し、表示ルーチンにデータを渡します。このルーチンは、印刷するコンテンツとデザインテンプレートを決定する必要があります。この方法で、あなたはSEOに優しい、使いやすい、きちんとした、整理しやすい[=開発者にやさしい]ウェブサイトを構築することができます - 今日のインターネットで遭遇することは非常にまれなALL IN ONE ...だから、それは正しいです!

+0

User-Agentヘッダーに頼る必要はなく、あらゆる種類のサーバー側またはクライアント側のスクリプトを使用する必要はありません。これは普通の静的なHTMLで行うことができます。条件付きコメントについては、私の答えなどを参照してください。 – rsp

1

更新と同時にレッスンを教える:

http://ie6update.com/

[OK]を、ので、それは完全にそれらをブロックしません。しかし、IE6と呼ばれる凶悪な惨劇を取り除くことから彼らの一部を騙すかもしれない。マイクロソフト!

+0

私は実際には、新しいブラウザをインストールするよりも簡単なIE7やIE8の代わりに[Chrome Frame](http://www.google.com/chromeframe)をインストールするように要請しています。 IE8はAcid3テストに完全に失敗します)。 – rsp

+0

私は同意しない、私はテスト以外のIEに触れていない。私は彼らが愛する恐竜をあきらめて "トリッキー"になっていることを知っているのが好きです...それは私を幸せにします! – bpeterson76

関連する問題