CGI-BBS > ホームページ記述言語 > iモード > 機種別アクセス制御について携帯端末とPCの判別を簡単にしたい。


カレッヂ
カレッヂ


質問者  投稿日 2004/2/25(水) 12:05:39
初めまして。機種別アクセス制御のスクリプトを見つけたのですが、これはi-mode,vodafone,ezweb,PCに分けてるみたいで
i-mode,vodafone,ezwebは「携帯」として一括りにして「携帯とPC」で判別するってことは可能でしょうか?


if($host =~ /\.(ezweb|ido)\.ne\.jp$/ || $ENV{'HTTP_USER_AGENT'} =~ /UP\.Browser/) {
		$ua = 'e';
	}elsif($host =~ /\.docomo\.ne\.jp$/ || $ENV{'HTTP_USER_AGENT'} =~ /DoCoMo/) {
		$ua = 'i';
	}elsif($host =~ /\.jp-[ckqt]\.ne\.jp$/ || $host =~ /\.vodafone\.ne\.jp$/ || $ENV{'HTTP_USER_AGENT'} =~ /J\-PHONE/) {
		$ua = 'v';
	}else {
		$ua = 'pc';
	}

あと、このスクリプトにある「|」と「||」はどういう意味ですか?私はandかorという意味だと思うのですが。

プロバイダ参照:i-mode,vodafone,ezweb
サーバのOS:UNIXサーバ
パソコンのOS:WinNT系
エディタ:ezhtml
FTPソフト:NextFTP
サーバ移転:していない
改造:していない
CGI習熟度:beginner

回答者 しあわせのツボ  [削除]  投稿日 2004/2/25(水) 14:52:36
$uaを3つとも同じにしてしまえばいいという問題ではなく?

そもそも、サンプルコードにはその後の処理も書いてあるでしょうから、
全て同じ所に飛ばすよう設定してしまえばいいだけで、
処理をまとめる意味を感じないのですが…。

もし「コードそのものを単純化したい」ということであれば、まず無理でしょう。
判別するには「ひとつずつキャリアを調べ、どれかに一致すれば携帯」しか方法がないので、
提示されているもののようにif文を並べるしかありません。

あと、調べればすぐにわかることですが、||はorです(厳密にはわずかに違うのですが、だいたい同じです)。
質問者  [削除]  投稿日 2004/2/25(水) 18:33:47
返事ありがとうございます。
おっしゃるとおり単純化する意味は全くないです。
$uaを一緒にすればいいのですが自分的に納得できず、もっと綺麗な書き方があればいいなと思い質問しました。
CGIについては無知なのでこれから時々質問させて頂きます。宜しくお願いします。今からCGI覚えようとするならPHPにしたほうがいいかな?

このページは終了したので返信(回答)は書きこめません
 


Web裏技