flandlescarlet's diary【情報工学生の備忘録】

元機械工学科所属だった情報工学生です。JavaScriptで適当に何かを作ったり、絵を描いていたりします。

CGI Hackで閲覧者を制御する2

とりあえず今回は環境変数というものを見てみたいと思います

環境変数は$ENV{}で始まり連想配列としてデータが幾つか保存されています。

IPアドレスの場合

$ENV{"REMOTE_ADDR"}

ブラウザの場合(とにかく長い名前が出てくる)

$ENV{"HTTP_USER_AGENT"}

基本的にはIPアドレスとブラウザさえわかれば同一のユーザーだと一応判定できます。

注:中にはプロクシサーバー経由で仮IPを出力している人や、固定IPでない人がいるため過信は出来ない

ブラウザの判定ですが、異常に長くなりますので正規表現にて簡易に文字の切り取り等行うと便利に扱えるでしょう

 

ブラウザの判別

Sample

 $user_agent = $ENV{"HTTP_USER_AGENT"};

if($user_agent =~ m/firefox/i){
$user_agent = "firefox";
}
elsif($user_agent =~ m/opera/i){
$user_agent = "opera";
}
elsif($user_agent =~ m/chrome/i){
$user_agent = "chrome";
}
elsif($user_agent =~ m/ie/i){
$user_agent = "IE";
}

何故CGI等で判別を行うか!?

答えとしてはいくつかありますが、JavaScriptで判別を行う場合、ユーザー側がJavaScriptをoffにすると当然ブラウザの判別が行えなくなります。またJavaScriptの場合ソースでブラウザを判別しているんだなという事がよくわかってしまうのでなんとなく虚しいです(拡張子に.cgiを使用している時点で何かしらのデータを収集しているようにしか見えないと思われる場合もありますが、その場合はSSIを利用する場合もあります)

ブラウザ判別はWebを構築する上でも必須の情報となるので

open()など駆使して収集してみるのも面白いでしょう