教えてください!

共通のURL
http://www.○○.com/  (index.cgi)
にて、PCユーザーやimode,J-sky等携帯からアクセスを受けた際、各ブラウザ?に適したページに自動でとばしたいと思っています。

質問の一つは、そのようなソース(ソフト?)が、入手可能かどうかという点と、自分で作る場合、

$ENV{'HTTP_USER_AGENT'};

で得られる情報の一覧は、どこかで調べることが出来るのか?
頭何文字で判断すればよいのか?それとも機種毎に設定しなければ行けないのか?

という点です。

ご指導お願いいたします。

A 回答 (1件)

私は下記の様にしています。


user agentにDoCoMoが入っているかを調べる物です。
DoCoMoならDoCoMo用のページを表示しJ-SkyならJ-Sky用のページそれ以外ならPC用にすればOKです。

if($ENV{'HTTP_USER_AGENT'} !~ /DoCoMo/) {
if($ENV{'HTTP_USER_AGENT'} !~ /J-PHONE/) {
&PC;
exit;
}
else{&JPHONE;}
}
else{&DOCOMO;}

下記が参考用のサイトです。

携帯のuser agent
http://specters.net/cgipon/labo/c_dist.html#user …

user agentの一覧
http://www8.big.or.jp/~000/CyberSyndrome/evc.html
    • good
    • 0
この回答へのお礼

まさに教えていただきたかった内容でした。
ありがとうございました。
うまくいきました。

お礼日時:2001/12/02 10:40

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qドコモ携帯で$ENV{'HTTP_REFERER'}が表示されない。

ドコモ用のプログラムを作成しています。
環境変数の$ENV{'HTTP_REFERER'}をドコモのブラウザから
表示させたかったのですが、表示できません。ほかの環境変数は
表示できるのですが、なぜか$ENV{'HTTP_REFERER'}だけが表示
できません。ほかのキャリアでは表示できるのですが、なぜでしょうか?

どなたかご教授お願いいたします。

Aベストアンサー

DoCoMoの機種はREFERERを送出しないものが多いようです。
(REFERERはHTTP通信の規格上では必須項目ではありませんし、バグというわけでもないです。)

アクセス解析なんかで参考程度に参照するならともかく、
REFERERに依存したプログラムは書くべきではないようです。

Q$ENV{'HTTP_COOKIE'}は例えば

a=x;b=y;c=z;
のようなフォーマットになっているのでしょうか?
そうすると
自分のサイトが使っているクッキー名と
他のサイトが使っているクッキー名が偶然に一致していたとき
あるブラウザに書かれている自分のサイトのクッキーが
そのブラウザが他のサイトをアクセスしたときに上書きされてしまうのでしょうか?
そのためにクッキー名をつけるときには偶然に一致しないように一定の長さ以上で特異な名前にしたほうがいいのでしょうか?
クッキーについて基本的なことを教えてください

Aベストアンサー

Cookieは、ドメインごとに設定され、パスで出力先が限定されます。パス指定されない場合、ドメインのルートパスとなります。

おっしゃる通り、同一ドメイン内で設定されたCookieが、全てHTTP_COOKIEで取得出来ます。(無論ドメインが違うと駄目。)もしも、Cookieにパス指定がある場合は、そのパス以下では該当のCookieが取得可能、それ以上の階層では取得不可能になります。(デフォルトだとルートパスなので、ドメイン内のどの階層でも取得可能です。)

このような仕様の為、同一ドメイン・パス指定以下の階層で利用されるものでは、偶然一致してしまうと、他のクッキーを上書きしてしまう可能性はあります。他と重複しない用に、プログラム名等を含ませる形で名付けてあげると良いでしょう。また、共用サーバなどでは、パス指定で自分のホームを指定しておき、他の方のクッキーと混同されないようにする、等の配慮が必要になります。

Q$ENV{'HTTP_COOKIE'}について

windowsサーバーのcgi(※)にて「$ENV{'HTTP_COOKIE'}」でcookieの値が正常に取得できてましたが、
linuxサーバーにそのソースをそのまま移行し、動作確認したところ「$ENV{'HTTP_COOKIE'}」でcookieの値が取得できなくなってしましました。
(※)・・・ショッピングカートの処理

ちなみにSSLを使用しているページです。
(1)画面A(http)から「カート入れる」ボタンをクリックし、画面B(https)に遷移
(2)画面Bに遷移した際にcookieに取得、保存

要するにhttpsでセットしたものをhttpsゲットしようとしています。

サーバーの環境は以下となります
■windowsサーバー
・OS : Windows 2003 R2 SP2
・Perl ver : 5.8.7

■linuxサーバー
・OS : Red Hat Enterprise Linux 4
・Perl ver : 5.8.8
・パーミッション : 757

ロジックは変更していないのでおそらくサーバーのどこかの設定を変更しなければならないのではないかと思われますが、どこに手を付けてよいのかがわかりませんので
ご教授していただきたいです。

宜しくお願い致します。

windowsサーバーのcgi(※)にて「$ENV{'HTTP_COOKIE'}」でcookieの値が正常に取得できてましたが、
linuxサーバーにそのソースをそのまま移行し、動作確認したところ「$ENV{'HTTP_COOKIE'}」でcookieの値が取得できなくなってしましました。
(※)・・・ショッピングカートの処理

ちなみにSSLを使用しているページです。
(1)画面A(http)から「カート入れる」ボタンをクリックし、画面B(https)に遷移
(2)画面Bに遷移した際にcookieに取得、保存

要するにhttpsでセットしたものをhttps...続きを読む

Aベストアンサー

サーバー、Webサイトは並行稼動しているのでしょうか。

cookie をセットするときに、ドメインを指定しているが、
移行先のサーバーにアクセスする際のURLのドメインと
異なる、なんてことはないでしょうか。。。

Qperlの環境変数 ENV{'REMOTE_ADDR'}  について

ショッピングカートのCGIにおいて

ENV{'REMOTE_ADDR'}

IPアドレスを取得すると思うのですが・・・。

何が原因なのかわかりませんが、違うIPアドレスのユーザー同士が、同じIPアドレスを取得したことになり、ショッピングカートの中が重複してしまいます

具体的に、お買物途中で注文したものを削除しないで注文をやめたお客様と同じIPアドレスのもつ他のお客様が買い物かごボタンを押すことにより、

後者のお客様が、ボタンを押していない商品もショッピングカートに入ってしまい・・・。

クレームが入ってしまいます

私ですが、perlに関して素人です。ですが、フリーのCGIを少し加工して使っております。

そこで、質問なのですが、ウイルスバスター等のセキュリティーソフトをインストールしていると、アクセス時に偽装のIPアドレスをログに残す可能性などあるのでしょうか?

勝手な解釈なのですが・・・。

それ以外に、IPアドレスが重複してしまう可能性が自分の知識の範囲内では、思いつきません。

素人的な考えかもしれませんが、ご教授お願い致します

ショッピングカートのCGIにおいて

ENV{'REMOTE_ADDR'}

IPアドレスを取得すると思うのですが・・・。

何が原因なのかわかりませんが、違うIPアドレスのユーザー同士が、同じIPアドレスを取得したことになり、ショッピングカートの中が重複してしまいます

具体的に、お買物途中で注文したものを削除しないで注文をやめたお客様と同じIPアドレスのもつ他のお客様が買い物かごボタンを押すことにより、

後者のお客様が、ボタンを押していない商品もショッピングカートに入ってしまい・・・。
...続きを読む

Aベストアンサー

>ショッピングカートにもIPアドレス認識タイプとCookie利用のタイプがあると思うのですが・・。

調べてみたらあるようですが
http://www.hal9800.com/home/cgi.html
IPアドレスによりきちんとした識別が出来ないため
弊害が起こりうることが明記されています。

>ユーザー自身がクッキーをOFFにしている場合、CGIが使えなくなってしまう
・サイトにクッキーを有効にしてくださいと記述する
・toppageでクッキーを発行し、買い物ページで、そのクッキーを保持しているかどうか判断して
保持していない場合「クッキーが有効でない場合買い物できません」と強調表示する
・クッキー以外の方法ではIDを発行して、QUERYなどでIDを保持させる

>私自身がアクセスしたい際にも、実際のIPアドレスではなく、架空のIPアドレスを2種類、、
これは良くわかりませんがENV{'REMOTE_ADDR'} だけでなく
$ENV{'SERVER_ADDR'} や他の環境変数も記録していませんか?
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2048321
の#2に書いた 環境変数一覧CGIを設置してアクセスしてみて確認してみてはいかがでしょうか?

>ショッピングカートにもIPアドレス認識タイプとCookie利用のタイプがあると思うのですが・・。

調べてみたらあるようですが
http://www.hal9800.com/home/cgi.html
IPアドレスによりきちんとした識別が出来ないため
弊害が起こりうることが明記されています。

>ユーザー自身がクッキーをOFFにしている場合、CGIが使えなくなってしまう
・サイトにクッキーを有効にしてくださいと記述する
・toppageでクッキーを発行し、買い物ページで、そのクッキーを保持しているかどうか判断して
保持し...続きを読む

Q$ENV{'REQUEST_URI'} の値を統一するには

先ほど気がついたのですが

$ENV{'REQUEST_URI'}

が ローカルと サーバー上で 扱いが違うので
統一したいと思います
設定を変更をするにはどうすればいいのでしょうか?


.../abc.cgi?a=1 だとすると

ローカルでは ?より前が返ってきます。
 .../abc.cgi
サーバーでは ?以降もいっしょに返ってきます・・・
 .../abc.cgi?a=1

値が違うので。。。

常に?以降を切り取るようにすればいいかもしれないですが......
簡単に設定で済む方法があればよろしくお願いします

Aベストアンサー

> $ENV{'REQUEST_URI'} = (split('??', $ENV{'REQUEST_URI'}))[0];

連想配列%ENVへの書き込みが許されてない環境なのかも、
いったん別変数(ex. $req_uri=split...)に書き出す形にしてみては。


おすすめ情報