家・車以外で、人生で一番奮発した買い物

下記のようにUser-Agentを取得し、
各キャリア別に振り分けているんですが、
ドコモ、kddi、PCはきちんと判定してそれぞれを
表示してくれますが、
ソフトバンク、ボーダフォン、j-phoneがうまく
判定してくれません。

ソフトバンクのソフト(ウェブコンテンツビューア)だと
パソコン版が表示され、実際の携帯でみるとau画面が表示されて
しまいます。

どなたかお力をおかしください。



<?
$header = getallheaders();
$agent = $header["User-Agent"] ;

if(ereg("DoCoMo",$agent)){
header("Location: http://www.aaa.com/mobi/i/index.html");
exit;
}
elseif(ereg("UP.Browser",$agent)){
header("Location: http://www.aaa.com/mobi/e/index.html");
exit;
}
elseif(ereg("SoftBank",$agent)){
header("Location: http://www.aaa.com/mobi/v/index.html");
exit;
}
elseif(ereg("Vodafone",$agent)){
header("Location: http://www.aaa.com/mobi/v/index.html");
exit;
}
elseif(ereg("J-PHONE",$agent)){
header("Location: http://www.aaa.com/mobi/v/index.html");
exit;
}
else{
header("Location: http://www.aaa.com/mobi/home.html");
exit;
}
?>

A 回答 (2件)

あんまり"ereg"関数は使いませんが、下記のソースでちゃんと分岐しますか?


コメント部分を変更して試して見てください。

-----------
if ( preg_match('/^DoCoMo/', $_SERVER['HTTP_USER_AGENT']) ) {
// DoCoMo
} elseif ( preg_match('/^(J-PHONE|Vodafone|SoftBank)/', $_SERVER['HTTP_USER_AGENT']) ) {
// Softbank(Vodafone, J-Phone)
} elseif ( preg_match('/UP\.Browser/', $_SERVER['HTTP_USER_AGENT']) ) {
// au
} else {
// etc
}

この回答への補足

回答ありがとうございます。
結果としてソフトバンクは
ビューアで観るとPC
ソフトバンク携帯で観ると au
の画面になってしまいます。

これはおそらく、スクリプトの誤りというより
サーバーが原因なのではないかと思い始めてしまいました。
xrea.comを使用しています。
このサーバーで各関数が全て使える環境には
あるのです。

サーバーの方も調べてみます。
どうもLocation:があやしいようです…

補足日時:2007/04/25 00:34
    • good
    • 0
この回答へのお礼

調べてみましたが
サーバーには問題ないようです。

ちなみに
SoftBankの3GにはAUと同じUP.Browserが含まれるものも
あるんですね。これでは混同してしまいますね

お礼日時:2007/04/25 01:21

ソース中の下記の部分を変更してみてください。



----------------
> $header = getallheaders();
> $agent = $header["User-Agent"] ;

   ↓   ↓   ↓

$agent = $_SERVER['HTTP_USER_AGENT'];
----------------

この回答への補足

ありがとうございます。
早速試してみました。やはり、ソフトバンク、ボーダフォン、j-phone分はうまく作動していないようです。
機種で試してはいませんが、
iモードもauもビューアでも確認できるんですが…
致命的な欠陥があるんでしょうか…

補足日時:2007/04/24 19:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報