#! /usr/bin/perl #┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ #┃初期設定 ┃ #┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ # ■キャリア別ジャンプ先URL # PCの場合 $jump_pc = "http://www.telsearch.net/"; # DoCoMoの場合 $jump_docomo = "http://www.telsearch.net/mob/i/index.htm"; # Vodafoneの場合 $jump_voda = "http://www.telsearch.net/mob/v/index.htm"; # AUの場合 $jump_au = "http://www.telsearch.net/mob/ez/index.htm"; # ■偽造ユーザエージェント対応 # 0:偽装ユーザエージェントを許可する # 1:偽装ユーザエージェントを許可しない # 偽装ユーザエージェントを許可しない場合は、ホスト名とユーザエージェントから # キャリアを判別します。偽装だった場合はPCと判別します。 $fake_agent_flg = 1; #┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ #┃初期設定ここまで ┃ #┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ #┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ #┃メイン分岐処理 ┃ #┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ &main; # メイン画面 exit; #┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ #┃メイン処理 ┃ #┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ sub main{ my($agent) = $ENV{'HTTP_USER_AGENT'}; # アクセス機種取得 $mobile = &chk_agent($agent); # キャリア別に分岐 if( $mobile == 0 ){ # PC/その他 &disp_page($jump_pc); }elsif( $mobile == 1 ){ # DoCoMo &disp_page($jump_docomo); }elsif( $mobile == 2 ){ # Vodafone &disp_page($jump_voda); }elsif( $mobile == 3 ){ # AU &disp_page($jump_au); } } #┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ #┃アクセス判別処理 ┃ #┃戻り値:0 = PC/その他からのアクセス ┃ #┃    1 = DoCoMoからのアクセス ┃ #┃    2 = Vodafoneからのアクセス ┃ #┃    3 = AUからのアクセス ┃ #┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ sub chk_agent{ my($agent) = @_; my($ret) = 0; my($host) = gethostbyaddr(pack('C4',split(/\./,$ENV{'REMOTE_ADDR'})),2); if( $agent =~ /DoCoMo/i ){ $ret = 1; if( $fake_agent_flg && $host !~ /docomo\.ne\.jp/i ){ $ret = 0; } }elsif( $agent =~ /J-PHONE/i || $agent =~ /Vodafone/i || $agent =~ /MOT\-/i ){ $ret = 2; if( $fake_agent_flg && $host !~ /\.jp-.\.ne\.jp/i ){ $ret = 0; } }elsif( $agent =~ /UP.Browser/i ){ $ret = 3; if( $fake_agent_flg && $host !~ /ezweb\.ne\.jp/i ){ $ret = 0; } } return( $ret ); }# chk_agent END #┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ #┃ページ移動処理 ┃ #┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ sub disp_page{ print "Location: $_[0]\n\n"; exit; }# disp_page END