この人頭いいなと思ったエピソード

WindowsXP dreamweaverCS3を使用
PHPの知識はまったくありません。
PCサイト「www.deri6mon.com」(PC用サイト)がすでにできており、
これをQRコードに変換してあります。
そのQRコードをユーザーがスマホと携帯のバーコードリーダーで変換し、
PCサイトにアクセスさせますが、携帯ユーザーは当然容量がオーバーしますので
エラーでとまってしまいます。
そこで、別に携帯サイトを用意してPCサイトにアクセスしてきた携帯ユーザーを
携帯サイトに自動で振り分けたいと考えています。
PCサイトの最上部に下記を記述しました。
PHPを書き込んだファイルはhtml→phpに拡張子を変換してあります。
-----------------ここから-------------------
<?php
$page_m='http://www.deri6mon.com/mb/index.html';
$agent=$_SERVER['HTTP_USER_AGENT'];
if (preg_match("/UP\.Browser\/[3-5]/",$agent) ||
preg_match("/J-PHONE\//",$agent) ||
preg_match("/DoCoMo\//",$agent)
&& !(preg_match("/(Win|Mac|Linux|FreeBSD|OS¥/2|Solaris)/i",$agent)) ||
preg_match("/UP.Browser/",$agent) ||
preg_match("/^Vodafone/",$agent) ||
preg_match("/^SoftBank/",$agent) ||
preg_match("/^MOT-/",$agent) ||
preg_match("/DDIPOCKET;/",$agent) ||
preg_match("/WILLCOM;/",$agent) ||
preg_match("/L-mode\/\//",$agent))
{

header("Location: $page_m");

}else{

}//end if
?>
-----------------ここまで----------------
しかしどうしても携帯でPCサイトが表示されてしまいます。
どこの設定(記述)をどうしたら良いのでしょうか。
因みにhttp://emu.mobile.goo.ne.jp/emu/emu.phpでPCサイトのアドレスを入れると携帯サイトのTESTが表示されるので記述は問題ないと思います。
教えてgooの過去Qを調べてみて気がついた記述が、私が使っているサーバーは
自動で挿入される広告があり「header Locationはエラーになる」というのが
ありました。
これを回避するにはどうすればいいのでしょうか?
PHPの知識が無いのでわかりやすく回答していただけるとたすかります。
よろしくお願いいたします。

A 回答 (1件)

複数の端末で確認されているとは思いますが、テストにお使いの携帯の機種は何でしょうか?



>&& !(preg_match("/(Win|Mac|Linux|FreeBSD|OS¥/2|Solaris)/i",$agent))

これは必要ですかねぇ。

とりあえず

<?php
$agent=$_SERVER['HTTP_USER_AGENT'];
print $agent . '<hr />' . PHP_EOL;

などとして、どういうUserAgentを取得しているか確認してください。

あと、headerで「Location」を返した後にexitを入れておいた方がいいかもしれません(そこそこ長いコンテンツになるのでしょうから)。

<?php
$page_m='http://www.deri6mon.com/mb/index.html';
$agent=$_SERVER['HTTP_USER_AGENT'];
if ((stripos($agent, 'UP.Browser') !== false)or
(stripos($agent, 'DoCoMo') !== false)or
(stripos($agent, 'J-Phone') !== false)or
(stripos($agent, 'Vodafone') !== false)or
(stripos($agent, 'Softbank') !== false)or
(stripos($agent, 'MOT-') !== false)or
(stripos($agent, 'DDIPOCKET') !== false)or
(stripos($agent, 'WILLCOME') !== false)or
(stripos($agent, 'L-mode') !== false)) {
header("Location: $page_m");
exit;
}
?>
<!-- 以下、PC用サイトのhtmlを記述 -->

この回答への補足

サーバーの契約を有料(広告が付かないタイプ)にしたら携帯へ飛びました。
ありがとうございました。

補足日時:2011/11/29 14:43
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
回答していただいたのに申し訳ないのですが、このphpの記述は私が記述したものではなく、
あるサイトの管理者の方がこうやると分岐できる、というものを拝借して実行した結果できなかった、ということで、私は全くphpがわかりません。

>どういうUserAgentを取得しているか確認してください。

よって編集するにもどこをどう編集したらいいのか分からない状態です。
できれば全て編集した状態で張っていただけると助かります。

私がテストでしようした携帯はDoCoMoP903iと最近のauの携帯です。どちらもPCサイトが表示されてしまいました。

今私が試しているのは自動挿入の広告が表示されない無料7日間のプランに変更してどうなるかを確認しています。

お礼日時:2011/11/29 13:00

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