PHPでブラウザを判別して処理を切り分ける方法
caraldo.net | WebとiPhoneとロードバイクが大好き! » プログラミング » PHP » PHPでブラウザを判別して処理を切り分ける方法
今回はPHPでブラウザを判別して処理を切り分ける方法をご紹介します。
※PHPに関しては乏しい知識の為ご指摘歓迎です。
lightbox.jsとFlickrの共存
先日巷でだいぶ前に話題のlightbox.jsを導入しました。
lightboxとはサムネイルもしくはリンクをクリックすると、オーバーレイして表示されるというものです。
ページの読み込みが終わってから↑の画像をクリックして見て下さい。
どうやらページの読み込みが完了しないとJavaScriptがしっかり機能しないようです。
導入はMovableType備忘録: サムネイルをLightbox JSで表示してみるを参考にして順調に進みました。
lightbox.jsの設置が完了してテストを行ってみるとFireFoxでは問題無く閲覧できました。
良い感じ。
続いてIEへ・・・。うまく動作しません。ページの読み込みに注意し何度トライしてもだめ。
こんな時JavaScriptいじれれば少しは解決が早いのかも知れません。
とりあえず他のScriptが干渉してうまく動かないというのが一番濃厚なので順次テスト。
見つけました。左カラムに設置しているFlickr、これはJavaScriptで読み込んでいます。
こやつを外すとうまく機能します。
対処法の検討
さすがにJavaScriptをいじり倒して共存させるテクニックはありません。(勉強します。)
Flickrを外すにしてもこのブログ唯一の動的コンテンツなのでなんだか嫌。
そこで閃きました。IEだけFlickrを非表示にすると。
最近PHPの勉強をしてまして、PHPでブラウザを判定して処理を切り分ける変更を行いたいと思います。
PHPコードの記述
以下が今回使用しているPHPです。
$HTTP_USER_AGENT = getenv( "HTTP_USER_AGENT" );
/* 環境変数 HTTP_USER_AGENT を見て、正規表現のマッチングをする(ereg)*/
if( !ereg( "MSIE", $HTTP_USER_AGENT ) ) {
require_once( "<$MTBlogSitePath$>flickr.php" );
}
?>
getenv( "HTTP_USER_AGENT" );で環境変数からUSER_AGENTを取得しています。
getenv関数は環境変数の値を取得する関数です。
取得した値を変数に格納し、その変数の中にMSIEという文字列があるかereg関数で判定しています。
!eregで否定文に変更し、MSIEの文字列が無い場合に
require_once関数で読み込みたい外部ファイルを指定しています。
うまく処理は完了しましたし、PHPを書く勉強にもなりました。
もう少し勉強してJavaScriptもいじれるようになります。
こういう風に実際に動かすとPHPも面白いですね。
090118追記
ブラウザ判別系で以下のような記事も書きましたので合わせてどうぞ。