※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。
後になるほど省略されている場合がありますのでできるだけ順番に読んでください。
また、実行に際しては、サーバーでPHPが利用できる事を前提に解説しています。
■ 携帯電話のキャリア別を取得
以前、「CGIサンプル」−「携帯電話のキャリア別を取得」を解説しましたが、今回はPHPで同様の処理を作成してみます。
まずは、「DoCoMo」、「J-PHONE(Vodafone)」、「EZWeb」、「PC(パソコン)」の4種類に振り分ける処理を考えてみましょう。
この処理を理解するには当然ですが、「HTML」の知識が必要になります。
解からない方は「HTMLの解説」で勉強してくださいね。
- 【 解 説 】
-
まず、アクセスしてきたユーザーのエージェント(OSやブラウザ情報など)を取得します。
その方法は、以前の「アクセス情報の表示」や「アクセスログの作成」で解説したとおり、次のように記述します。
$agent = $_SERVER["HTTP_USER_AGENT"];
この取得した文字列中に、「DoCoMo」の場合「DoCoMo」、「J-PHONE」、「Vodafone」の場合「J-PHONE」、「EZWeb」の場合「UP.Browser」という文字が入ってることを利用します。
※「vodafone」も「J-PHONE」という文字が入ってます。次に、変数「$agent」の中に「DoCoMo」という文字が入ってるかどうかは、「PHPの予備知識」−「文字列の検索と置換」で解説した「strpos()」を使い、次のように記述することにより確認できます。
if (strpos($agent, "DoCoMo") !== FALSE) { }あと、「J-PHONE(Vodafone)」、「EZWeb」も同じで、それ以外を「PC(パソコン)」と判断するようにします。
では、上記の内容を使用して「携帯電話のキャリア別を取得」を作成してみます。
- 【記述サンプル】
- <?php print <<< END_DOC <HTML> <HEAD> <title>携帯電話のキャリア別を取得</title> </HEAD> <BODY> END_DOC; $agent = $_SERVER["HTTP_USER_AGENT"]; $str0 = "pc"; if (strpos($agent, "DoCoMo") !== FALSE) $str0 = "docomo"; if (strpos($agent, "J-PHONE") !== FALSE) $str0 = "jphone"; if (strpos($agent, "UP.Browser") !== FALSE) $str0 = "ezweb"; print "エージェント:$agent<br>\n"; print "キャリア:$str0<br>\n"; print <<< END_DOC </BODY> </HTML> END_DOC; ?>