こちらで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を呼び出しているフォルダーにもおかないとエラーが出る。