ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

初心者PHP講座コミュの10時限目)USER AGENT

  • mixiチェック
  • このエントリーをはてなブックマークに追加
USER_AGENT(ユーザーエイジェント)とは、
ホームページなどを閲覧する際にブラウザからWebサーバー側に送信される情報のこと。
んでそれを知ったらどうなるか。



USER AGENTは各端末によって決まってます。
例えばIE6.0だったらUSER AGENTは
Mozilla/4.0 (compatible; MSIE 6.0; Win32)
DocomoのF900iなら
DoCoMo/2.0 F900i(c100;TB;W22H12)
て感じ。

そんでこいつを使うことによって
各端末に対して最適な情報を与えることができるんですよ。

PC用のサイト作るときって
容量なんて気にしないでしょ?
でもImodeとかVodafone用のサイト作るときって
表示できる容量が決められてるから
いやでもPC用のサイトと分別しなきゃならん。
んで、EZだったらもっと複雑でHTMLじゃなくてHDMLを使わないと
表示することができない。

2006年にはEZはHDMLを廃止する方向で動いてるね。
やっとかよって感じ。 すげーうざいんだもん。。。HDML。。。


そんなこんなでUSER AGENTってのは結構プログラムやってて使うのね。
んじゃどうプログラムすれば各端末ごとにUSERAGENTを切り分けれるか。

例10−1--------------------------------------------------
<?php

if(preg_match("/Mozilla\//",$_SERVER["HTTP_USER_AGENT"])){
$carrier = "pc";
}
elseif(preg_match("/DoCoMo/",$_SERVER["HTTP_USER_AGENT"])){
$carrier = "imode";
}
elseif(preg_match("/J-PHONE/",$_SERVER["HTTP_USER_AGENT"])){
$carrier = "vodafone";
}
elseif(preg_match("/UP\.Browser\/3/",$_SERVER["HTTP_USER_AGENT"])){
$carrier = "ez";
header("Content-type: text/x-hdml;charset=Shift_JIS");
}
else{
$carrier = "pc";
}


print $carrier;

?>
------------------------------------------------------------
こんな感じ。
ん〜この講座ちょっと早かったかも。。。まぁいいや。

ここで書いた$_SERVERのスーパーグローバル変数はUSER_AGENTを取得してるのね。
例えば、imodeでこのプログラムにアクセスすると
------------------------------------------------------------
imode
------------------------------------------------------------

って表示される。
IEだったら
------------------------------------------------------------
pc
------------------------------------------------------------
EZの場合はちょっと特殊でヘッダー情報を加えないと表示されない。
だから「header("Content-type: text/x-hdml;charset=Shift_JIS");」こんな記述を
加えないといけない。

このプログラムを日本語で書くと

------------------------------------------------------------
もし、アクセスしたUSER_AGENTに”Mozilla/”ってのがあったら
$carrierに"pc"を代入。

その他、もしアクセスしたUSER_AGENTに”DoCoMo”ってのがあったら
$carrierに"imode"を代入。

その他、もしアクセスしたUSER_AGENTに”J-PHONE”ってのがあったら
$carrierに"vodafone"を代入。

その他、もしアクセスしたUSER_AGENTに”UP.Browser/3”ってのがあったら
$carrierに"ez"を代入。
ヘッダー情報にx-hdml。

それら以外の場合は
$carrierに"pc"を代入。


$carrierを表示
------------------------------------------------------------

こんな感じになる。
使用している関数は「preg_match」という関数。
この関数は正規表現用関数。

正規表現ってのは。。。
えーっと、長くなるので次回に持ち越します。。。

コメント(0)

mixiユーザー
ログインしてコメントしよう!

初心者PHP講座 更新情報

初心者PHP講座のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング