はじめまして。初めて質問させて頂きます。

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

よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (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/
    • good
    • 0

回答ではありませんがどうかご覧下さい。



アクセスの判別については下の方の通りで問題ないと思います。
(私も自分のサイトで同じ判別を行っています。)

しかし、できれば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) の処理
}
    • good
    • 0

他の方が、書かれているとおり、アクセスがあったときに


環境変数 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 アドレスから判断する方法もありますね.
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます!

おおぉ~、ルーチンまでご丁寧に書いて下さいまして本当に感謝です!

とても分かりやすい回答に大変満足しております。
ありがとうございました。

お礼日時:2001/02/14 22:52

どの携帯がどんなエージェント返すかわからない場合は、とりあえず Mozilla ってのをはじけばOKでしょう。


これでNetscapeとなぜかIE(笑)もはじけます。つまりほぼ90%近くのPCブラウザをはじける事になります。

i-modeの場合はDoCoMoってキーワードを探せば良いと思うんですが、他は判りません。
とりあえず暫くログを取ってみて、どんなユーザエージェントが来るか傾向と対策を練ってみるのはいかがでしょう?

あとは「HTTP_USER_AGENT」で検索すれば、色々情報が出てくるでしょうね。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます!

そうですね!
Mozillaではじいてもいいですね。
参考になります。

あと、「HTTP_USER_AGENT」で検索も早速やってみます。

ありがとうございました。

お礼日時:2001/02/14 22:44

サーバ側で端末の環境変数を取得してその中のユーザエージェントで


i-MODEやJ-SKYは判断できると思います。

HTTP_USER_AGENT

に文字列で入りますのでそれで判断。
それ以外でのアクセスの場合に条件分岐させてエラー画面を出せばOK。
    • good
    • 0
この回答へのお礼

ご返事遅れましてすいません。

アドバイスありがとうございます!

HTTP_USER_AGENTですね。了解しました(^^ゞ
まだ私自身、CGI(perl)に関しては、他の方のスクリプトの改造程度しかできませんで、、知識がまったく足りないのです(^^;;

ありがとうございました。

お礼日時:2001/02/14 22:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング