こちらでget_browserを利用してブラウザーの種類とバージョンを調べ、古いバージョンならメッセージを出すようにしたが、問題が生じた。

普通なら問題ないのだが、こちらに書いたようにいったん、hoge.phpに飛ばしてから、その中で実行させた時、前回のままだとget_browserがuser_agentを特定できないで警告がでる。

get_browser(): HTTP_USER_AGENT variable is not set, cannot determine user agent name

そのためアルゴリズムを以下のようにした。

1、ブラウザーの種類とバージョンをhoge.php(xxx.htmlの呼び出し用)とpage.phpと両方で行う。
2、hoge.phpからブラウザーの種類とバージョンを引き渡すし、それをpage.phpで判定し、メッセージの有無を表示する。
3、1と2の変更に伴い、browser_det.phpは使わない(使えないので使わないということ、includeなどの二重呼出ををするとIEの表示崩れがある、理由は不明)

まず、hoge.phpは

$browser = get_browser(null,true);

// ブラウザーのバージョンがIE7より小さい(IE6以下)ならブラウザーのバージョンをアップするように促す
$ie_old = 0;
if (($browser[browser] == ‘IE’) && ($browser[majorver]<7)){
  $ie_old = 1;
  $majorver = $browser[majorver];
}
//echo ‘$ie_old0= ‘.$ie_old.’<br>’;
//echo ‘$majover0= ‘.$majover.’<br>’;

// 商品idの取得
$id = $_GET['id'];
$server_name = $_SERVER["SERVER_NAME"];
readfile(htt://hoge.hoge.com/item.html?id=$id&ie_old=$ie_old&majorver=$majorver);

ブラウザーのバージョンがIE6以下なら古いバージョンと見なす。

page.php

<?php
$ie_old = $_GET['ie_old'];
$majorver = $_GET['majorver'];

if ($ie_old == “”){
// ブラウザーの種類を取得
 $ie_old = 0;
 $browser = get_browser(null,true);
 if (($browser[browser] == ‘IE’) && ($browser[majorver]<7)){
  $ie_old = 1;
  $majorver = $browser[majorver];
 }
}
?>
<?php
if ($ie_old == 1){
 echo ‘<br><br><br><br><br><br><center><font color =red>’.'お使いのブラウザーはインターネットエクスプローラーのバージョン’.$majorver.’です。’.'<br>’;
 echo ‘古いバージョンのためにきちんと表示することができません’.'<br>’;
 echo ‘バージョン7以上にアップデートしてください。’.'<br>’.'</font><center>’;
}
?>

$ie_old == “” つまり、hoge.phpの経路ではない場合、ブラウザーの種類とバージョンを調べる。

この2つの変更で、うまくエラーメッセージを表示できるようになった。

なお、php.iniをhoge.phpを呼び出しているフォルダーにもおかないとエラーが出る。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>