![]() |
| カレッヂ |
質問者 がおがお
投稿日 3/2(日) 16:51:10
log.cgiを改造して,HTTP_USER_AGENTのところで,Operaなどを拾う
要にしたいのですが,
if ($HTTP_USER_AGENT =~ /(.+)\/(\d)\..*compatible\; MSIE (\d)\./) {
$HTTP_USER_AGENT ="MSIE/$3 of $1/$2 compatible";
}
elsif ($HTTP_USER_AGENT =~ /Mozilla\/(\d)\./) {
$HTTP_USER_AGENT ="Mozilla/$1";
}
に
elsif ($HTTP_USER_AGENT =~ /Opera/(\d)\./) {
$HTTP_USER_AGENT ="Opera/$1";
}
を加えたのですが,認識がうまくいきません.
良い方法を教えてください.
プロバイダ参照:http://www.sakura.ad.jp/ |
回答者 しあわせのツボ
[削除]
投稿日 3/2(日) 19:10:16
「うまくいかない」とはどのような状況ですか? エラーになって動作しないのか、意図しない動作になってしまうのか、 動作はしているが変更が反映されないのか、など様々な状況が考えられ、 それによって答えも変わります。 質問する際は、期待する結果と現在との違いをできるだけ詳しく書くと 的確な回答がより素早くつくようになります。 まあ今回は見当がついたので。 現在あるブラウザの多くはMozilla/4.0で始まるUSER_AGENTを返します。 なのでそれより先に判定しないといけません。 |
質問者 がおがお
[削除]
投稿日 3/3(月) 13:17:33
しあわせのツボさん,即レスありがとうございます.
また,説明不足な点をお詫びいたします.
仰るとおりで,Operaは
Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows ME) Opera 7.02 [ja]
を返します.ですので,if文の先頭に以下の様に持っていったのですが,
if ($HTTP_USER_AGENT =~ /Opera/(\d)\./) {
$HTTP_USER_AGENT ="Opera/$1";
}
elsif ($HTTP_USER_AGENT =~ /(.+)\/(\d)\..*compatible\; MSIE (\d)\./) {
$HTTP_USER_AGENT ="MSIE/$3 of $1/$2 compatible";
}
elsif ($HTTP_USER_AGENT =~ /Mozilla\/(\d)\./) {
$HTTP_USER_AGENT ="Mozilla/$1";
}
動作しませんでした.そこで,昨日の命令の順序にしたのですが,
やはりIE/5として判断されてしまいます. |
質問者 がおがお
[削除]
投稿日 3/3(月) 14:02:49
思考錯誤の末
if ($HTTP_USER_AGENT =~ /Opera (\d)\./) {
$HTTP_USER_AGENT ="Opera/$1";
}
elsif ($HTTP_USER_AGENT =~ /(.+)\/(\d)\..*compatible\; MSIE (\d)\./) {
$HTTP_USER_AGENT ="MSIE/$3 of $1/$2 compatible";
}
elsif ($HTTP_USER_AGENT =~ /Mozilla\/(\d)\./) {
$HTTP_USER_AGENT ="Mozilla/$1";
}
としたらOperaが認識できました.
ありがとうございます. |
回答者 しあわせのツボ
[削除]
投稿日 3/3(月) 14:05:56
まず
> if ($HTTP_USER_AGENT =~ /Opera/(\d)\./) {
これ、本当に動作しましたか?
if ($HTTP_USER_AGENT =~ /Opera\/(\d)\./) {
としなければエラーが出ると思うのですが。
更に、Operaは
> Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows ME) Opera 7.02 [ja]
と返しているのですから
if ($HTTP_USER_AGENT =~ /Opera (\d)\./) {
でないと認識しませんよね。
以上を確認してください。 |
質問者 がおがお
[削除]
投稿日 3/3(月) 14:16:28
しあわせのツボさん,ありがとうございました. 正常に,思ったように動作しました. これからもよろしくお願いします. |
このページは終了したので返信(回答)は書きこめません
| Web裏技 |