perlでブラウザを判別して表示するHTMLを分ける方法は?

[上に] [前に] [次に]
とも [E-Mail] 1999/08/24(火) 14:14:17
IEとネスケで表示するHTMLを変えるのに、
CGIレベルで変えたいんですけど、
JavaScriptとPerlでは環境変数が
違うようなので、困っています。
何かいい方法はないでしょうか?

ふじ 1999/08/24(火) 14:34:25
>JavaScriptとPerlでは環境変数が違うようなので
CGIで振り分けるのに JavaScriptの navigator オブジェクトを使う必要って、あるんですか?

Perlで
$ENV{'HTTP_USER_AGENT'}
を見て判別してやるだけで良いと思うんですけど。

とも 1999/08/24(火) 14:47:23
言葉がたらなかったですね。

>$ENV{'HTTP_USER_AGENT'}
>を見て判別してやるだけで良いと思うんですけど。
おっしゃるように$ENV{'HTTP_USER_AGENT'}で判別するつもりなんですけど、
ねすけ:Mozilla/4.5 [ja] (Win95; I)
IE ;Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)
と、返ってくるので、
if ($ENV{'HTTP_USER_AGENT'} =~ /MSIE/)
とマッチングでとりあえずは分けられるまで出来たんですが、
バージョン情報の取り出し方や、
その他のブラウザ等の切り分けかたも、知りたいです。

ふじ 1999/08/24(火) 16:33:36
正規表現使って

$str =~ /Mozilla\/(.*)/;
$appVersion = $1;

#バージョンの数字だけ欲しいなら
#$str =~ /Mozilla\/([\d.]+)/;
#$appVersion = $1;

if($str =~ /MSIE/){
$appName = "Microsoft Internet Explorer";
}elsif($str !~ /compatible/ and $str =~ /Mozilla/){
$appName = "Netscape";
}else{
$appName = "Others";
}

他のブラウザについては、送って来る HTTP_USER_AGENT の値を見て、
それにマッチするような正規表現を追加するしかないかな・・・

ふじ 1999/08/24(火) 16:35:48
あと、JavaScriptで得た値をCGIにパラメータとして送っちゃう、
って方法もありますね。

とも 1999/08/24(火) 20:07:25
[[解決]]
おお!すごぃ。
正規表現の使い方が解らなかったんです。
ありがとうございました。

[上に] [前に] [次に]