• 締切済み

i-mode&J-phoneからのみのアクセス限定

はじめまして。初めて質問させて頂きます。 Perlで作成されたCGIスクリプト内で、i-modeとJ-phone端末からでしかアクセスできないようにする事ってどのようにスクリプトを組めばよいのでしょうか。 PCからアクセスすると、携帯からのアクセスして下さいといったエラー画面が出るようにしたいのですが。 よろしくお願い致します。

みんなの回答

  • ka-2
  • ベストアンサー率37% (22/58)
回答No.5

携帯電話からのアクセスは ezweb.ne.jp ido.ne.jp docomo.ne.jp jp-t.ne.jp jp-c.ne.jp jp-q.ne.jp がほとんど(というかほぼすべて)なので これ以外のサーバからのアクセスは拒否すれば携帯専用になります。 補足説明ですが、各携帯電話用にホームページを振り分けてくれるサービスがあります。 面倒なら使用してみてはどうでしょうか。 by odring lab

参考URL:
http://odring.com/gw/
  • Atalia
  • ベストアンサー率38% (48/124)
回答No.4

回答ではありませんがどうかご覧下さい。 アクセスの判別については下の方の通りで問題ないと思います。 (私も自分のサイトで同じ判別を行っています。) しかし、できればauのEZwebも入れるようにしていただけませんか?(^^; EZwebではHDMLしかブラウズしないように思われていますが、 i-mode対応のサイトのCHTML程度であれば サーバのトランスレーター機能により(ある程度)表示可能です。 以下、参考までに判別ルーチンです。 ($mob{car},$mob{ver},$mob{mod}) = split(/\//,$ENV{'HTTP_USER_AGENT'}); if ($mob{car} eq 'J-PHONE') { # J-phon eの処理 } elsif ($mob{car} eq 'DoCoMo') { # DoCoMo の処理 } elsif ($mob{car} eq 'UP.Browser') { # EZ-web の処理 } elsif ($mob{car} eq 'ASTEL') { # ASTEL(.i) の処理 }

  • h-kiku
  • ベストアンサー率50% (22/44)
回答No.3

他の方が、書かれているとおり、アクセスがあったときに 環境変数 HTTP_USER_AGENT をチェックすれば いいと思います. HTTP_USER_AGENT の中身は + i-mode の場合 DoCoMo/1.0/P209i/c10 DoCoMo/HTTP Ver./機種名/キャッシュ + J-Sky の場合 J-PHONE/2.0/J-SH03 J-PHONE/ブラウザ Ver./機種名 というような値が入っています.(多分) 以下、自信がない判定ルーチン.(_o_) -->--> # HTTP_USER_AGENT の取得 $AGENT=$ENV{'HTTP_USER_AGENT'}; if ($AGENT =~ /^DoCoMo/ || $AGENT=~ /^J-PHONE/) { # OK # DoCoMo 用メッセージ # J-PHONE 用メッセージ } else { # NG # 「携帯からアクセスしてね.」 } <--<-- もっと厳密(?)にアクセス制限をするのであれば IP アドレスから判断する方法もありますね.

sifon
質問者

お礼

アドバイスありがとうございます! おおぉ~、ルーチンまでご丁寧に書いて下さいまして本当に感謝です! とても分かりやすい回答に大変満足しております。 ありがとうございました。

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.2

どの携帯がどんなエージェント返すかわからない場合は、とりあえず Mozilla ってのをはじけばOKでしょう。 これでNetscapeとなぜかIE(笑)もはじけます。つまりほぼ90%近くのPCブラウザをはじける事になります。 i-modeの場合はDoCoMoってキーワードを探せば良いと思うんですが、他は判りません。 とりあえず暫くログを取ってみて、どんなユーザエージェントが来るか傾向と対策を練ってみるのはいかがでしょう? あとは「HTTP_USER_AGENT」で検索すれば、色々情報が出てくるでしょうね。

sifon
質問者

お礼

アドバイスありがとうございます! そうですね! Mozillaではじいてもいいですね。 参考になります。 あと、「HTTP_USER_AGENT」で検索も早速やってみます。 ありがとうございました。

  • blue_leo
  • ベストアンサー率22% (541/2399)
回答No.1

サーバ側で端末の環境変数を取得してその中のユーザエージェントで i-MODEやJ-SKYは判断できると思います。 HTTP_USER_AGENT に文字列で入りますのでそれで判断。 それ以外でのアクセスの場合に条件分岐させてエラー画面を出せばOK。

sifon
質問者

お礼

ご返事遅れましてすいません。 アドバイスありがとうございます! HTTP_USER_AGENTですね。了解しました(^^ゞ まだ私自身、CGI(perl)に関しては、他の方のスクリプトの改造程度しかできませんで、、知識がまったく足りないのです(^^;; ありがとうございました。

関連するQ&A