例えば下記ページのように、アクセスしてきた人のパソコンの様々な環境情報を取得することが出来るサイトをよく見かけます。

http://duga.jp/help/pc_check.html

OSやブラウザぐらいなら環境変数から取得出来そうですが、他のjavascriptや解像度、Windows Media Playerなどは、どのように取得(判定)しているのでしょうか。

メインの言語はPHPですが、javascriptとの組み合わせなどでも可です。
よろしくお願い致します。

回答の条件
  • 1人5回まで
  • 登録:2009/09/02 18:02:47
  • 終了:2009/09/03 11:43:01

ベストアンサー

id:avena No.2

avena回答回数48ベストアンサー獲得回数72009/09/02 19:14:39

ポイント200pt

環境変数から取れない情報も、JavaScript との組み合わせで色々な取得できます。

各種情報の取り方はそれぞれ工夫が必要で、

 

●画面解像度を取る

下記 URL にあるような JavaScript で取得

http://program.station.ez-net.jp/notes/common/271.asp

 

こんな感じで色々やります。

あとは、実際に例示していだいたページのコードを読んでみると、何やってるかがわかります。

全部クライアントサイドで処理させてるっぽいですね。

 

●クッキーの有効無効

navigator.cookieEnabled;

で取得してるようです。

 

●MediaPlayer

実際に <object> タグで MediaPlayer オブジェクトを埋め込み、それを JavaScript でごにょごにょしてます。

<object id="WMPlayer"

でソース内を検索してその下の <script> 内がちょうど MediaPlayer のバージョン判定のコードになってますね。

 

例示していただいたページでは、JavaScript を使って全部クライアントサイドで用を済ませる作りになっていました。

ユーザに見せるだけでなく、サーバサイドの PHP で弄る必要があるなら、環境変数でどうにか取得できるぶんは PHP だけで解決し、それで無理な部分は、hidden の値としてフォームに適当にセットしておいて、それを post させると上手くいくでしょう。

 

たとえば、JavaScript の有効無効をチェックするならあらかじめ input 要素を用意しておいて、

(例: <input id="jsEnabled" type="hidden" name="jsEnabled" value="false"/>)

JavaScript が有効ならその値が変更されるようにする

(例: document.getElementById('jsEnabled').value='true')

→それを送信 (この場合、JavaScript が有効なら jsEnabled=true がパラメタとして送られてくることになる)

 

JavaScript で取得した MediaPlayer のバージョンが playerMajorVersion なら、<input type="hidden" id="mediaPlayerVersion" name="mediaPlayerVersion"/> という具合のものを HTML に仕込んだ上で、

document.getElementById('mediaPlayerVersion').value=playerMajorVersion

という具合に流し込む。

 

(※はてな記法がよくわからないので、うまく書き込めない<や>は半角だと思ってください。ごめんなさい。)

id:rimtamago

詳しい説明をありがとうございました。

おかげさまで、中で何をしているのかが良く理解できました。

2009/09/03 11:41:16

その他の回答(2件)

id:ymlab No.1

ymlab回答回数507ベストアンサー獲得回数342009/09/02 18:39:10

ポイント60pt

javascriptから、解像度は取得できます。

http://www9.plala.or.jp/oyoyon/html/script/screen.html

PHPからは、javascriptの変数を取る方法は多数ありますが、

http://oshiete1.goo.ne.jp/qa2005082.html

こんな質問が乗っていました。

面倒でしたら、postで渡してもよいかと。

id:rimtamago

ありがとうございます。

PHPとのやりとり部分はおもしろそうですね。

2009/09/03 11:40:09
id:avena No.2

avena回答回数48ベストアンサー獲得回数72009/09/02 19:14:39ここでベストアンサー

ポイント200pt

環境変数から取れない情報も、JavaScript との組み合わせで色々な取得できます。

各種情報の取り方はそれぞれ工夫が必要で、

 

●画面解像度を取る

下記 URL にあるような JavaScript で取得

http://program.station.ez-net.jp/notes/common/271.asp

 

こんな感じで色々やります。

あとは、実際に例示していだいたページのコードを読んでみると、何やってるかがわかります。

全部クライアントサイドで処理させてるっぽいですね。

 

●クッキーの有効無効

navigator.cookieEnabled;

で取得してるようです。

 

●MediaPlayer

実際に <object> タグで MediaPlayer オブジェクトを埋め込み、それを JavaScript でごにょごにょしてます。

<object id="WMPlayer"

でソース内を検索してその下の <script> 内がちょうど MediaPlayer のバージョン判定のコードになってますね。

 

例示していただいたページでは、JavaScript を使って全部クライアントサイドで用を済ませる作りになっていました。

ユーザに見せるだけでなく、サーバサイドの PHP で弄る必要があるなら、環境変数でどうにか取得できるぶんは PHP だけで解決し、それで無理な部分は、hidden の値としてフォームに適当にセットしておいて、それを post させると上手くいくでしょう。

 

たとえば、JavaScript の有効無効をチェックするならあらかじめ input 要素を用意しておいて、

(例: <input id="jsEnabled" type="hidden" name="jsEnabled" value="false"/>)

JavaScript が有効ならその値が変更されるようにする

(例: document.getElementById('jsEnabled').value='true')

→それを送信 (この場合、JavaScript が有効なら jsEnabled=true がパラメタとして送られてくることになる)

 

JavaScript で取得した MediaPlayer のバージョンが playerMajorVersion なら、<input type="hidden" id="mediaPlayerVersion" name="mediaPlayerVersion"/> という具合のものを HTML に仕込んだ上で、

document.getElementById('mediaPlayerVersion').value=playerMajorVersion

という具合に流し込む。

 

(※はてな記法がよくわからないので、うまく書き込めない<や>は半角だと思ってください。ごめんなさい。)

id:rimtamago

詳しい説明をありがとうございました。

おかげさまで、中で何をしているのかが良く理解できました。

2009/09/03 11:41:16
id:azuco1975 No.3

azuco1975回答回数613ベストアンサー獲得回数162009/09/03 06:04:54

ポイント30pt

解像度はJavascriptで簡単に取得できます。

http://www.broadband-xp.com/affiliate/resolution.html

id:rimtamago

ありがとうございます。

2009/09/03 11:40:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません