• ベストアンサー

モバイルの自動判別について

こんにちは。先日softbankを使っているお客様からモバイルサイトが見れないとクレームが入りました。 調べると、Softbank,vodafoneについても記述しないといけないようですが以下のCGIは以前に友人に作ってもらっていたもので 自分ではCGIの知識がない為上手く修正できません。 softbank携帯で見れるようにするには どう修正したらいいのでしょうか。 どうかよろしくお願いいたします。 (モバイルサイトは皆同じアドレスです) #!/usr/local/bin/perl $lct=''; ##Jaup 1 $jphone='J-PHONE'; $jjump='http://www.○○.biz/i/index.html'; #j-Phone用 ファイルアドレス指定 ##Jaup 2 $imode='DoCoMo'; $ijump='http://www.○○/i/index.html'; #i-MODE用 ファイルアドレス指定 #$ezmode='UP.Browser'; $ezjump='http://○○/i/index.html'; ## ユーザーエージェント $USR = $ENV{'HTTP_USER_AGENT'}; if ($USR =~ /$jphone/i) { $lct = $jjump;&go;} if ($USR=~ /$imode/i) { $lct = $ijump;&go;} if ($USR=~ /$ezmode/i) { $lct = $ezjump;&go;} $lct='http://www.○○.biz/index.html'; #パソコン用 ファイルアドレス指定 # &go; exit; sub go { print "Location: $lct\n\n"; } exit;

質問者が選んだベストアンサー

  • ベストアンサー
  • tsaito
  • ベストアンサー率68% (17/25)
回答No.1

Perlはよく分かりませんので、参考程度で $jphone='J-PHONE,vodafone,softbank'; と記述して ## ユーザーエージェント $USR = $ENV{'HTTP_USER_AGENT'}; の下ぐらいに @JP = split(/,/,$jphone); を追加 if ($USR =~ /$jphone/i) { $lct = $jjump;&go;} の行は、コメントアウトして、代わりに以下を追加 for($i = 0; $i <= $#JP; $i++){     if ($USR =~ /$JP[$i]/i) {         $lct = $jjump;         &go;     } } でいかがでしょうか。 おそらく、Perlに精通した方でしたら、もっと 単純なプログラムになると思います。

mokorobo
質問者

お礼

ありがとうございます。 試してみます。

その他の回答 (1)

  • pick52
  • ベストアンサー率35% (166/466)
回答No.2

その作られた方に修正してもらうわけにはいかないのでしょうか。 とりあえず、Vodafone及びSoftBankのUAが何になっているかが ちょっと分からないので明確に答えられませんが $jphone='J-PHONE'; を $jphone='(J-PHONE|Vodafone|SoftBank)'; みたいな感じにすればいいじゃないでしょうか。 (Vodafone及びSoftBankのUAがそれぞれVodafone/SoftBankであった 場合) ただ、UAだけで判断する場合はUAは偽装したりできますしあまり 信頼性は高くないと思います。 その点はご注意ください。

mokorobo
質問者

お礼

ありがとうございます。解決いたしました!

関連するQ&A