- 締切済み
携帯振り分けPHP”で携帯からPCサイトにアクセスするとPCサイトが見えてしまう!
”携帯振り分けPHP”で携帯サイトとパソコンサイトを振り分けています。 http://www.○○○.com/ にアクセスすると ソフトバンクからアクセスすると、 http://www.○○○.com/softbank.html パソコンからアクセスすると、 http://www.○○○.com/pc.html に振り分けられています。それまでは良いのですが、 ソフトバンクから http://www.○○○.com/pc.html にアクセスすると http://www.○○○.com/pc.html のページが見れてしまうし!! パソコンから http://www.○○○.com/softbank.html にアクセスすると http://www.○○○.com/softbank.html のページが見れてしまいます!! ソフトバンクから、pcのページにアクセスしたなら、ソフトバンクのページを表示させたいし、 パソコンから、ソフトバンクのページにアクセスしても、pcのページが表示されるようにするにはどうすれば可能でしょうか?宜しくお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- mpx
- ベストアンサー率71% (149/209)
>> PHPを利用せずに.htaccessを利用することで、、 >> ・携帯からパソコンのサイトアドレスにアクセスした場合に、アクセスしたのは携帯だから携帯のページへ! >> ・パソコンから携帯のアドレスにアクセスした場合には、アクセスしたのはパソコンだからパソコンのページへ! >> の設定も可能になるのでしょうか? もちろん出来ます。PHPなどのスクリプトを使わないのでhtmlなど静的なページにも対応できます。 先回記載した例では、携帯でどのページにアクセスしてもその携帯会社別のページを表示する例でした。PCで携帯用のページをアクセスしたときにPC用のページに飛ばすにはもう少し設定の追加が必要ですが・・ 設定方法はいろいろ有るので、「RewriteEngine 携帯 PC 振り分け」でググって見てください。豊富に事例が見つかるはずです
- mpx
- ベストアンサー率71% (149/209)
静的なページを対象にしているしているので PHPとは無関係の回答になってしまいますが .htaccessの設定が可能なサーバーを利用しているのなら mod_rewriteを使うのが楽でしょう。 以下のコードを .htaccessに記入しておけば、勝手に振り分けられます。PCの場合は、index.htmlが開きます。 RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo RewriteRule ^$ /docomo.html [R] RewriteCond %{HTTP_USER_AGENT} J-PHONE RewriteRule ^$ /softbank.html [R] RewriteCond %{HTTP_USER_AGENT} Vodafone RewriteRule ^$ /softbank.html [R] RewriteCond %{HTTP_USER_AGENT} SoftBank RewriteRule ^$ /softbank.html [R] RewriteCond %{HTTP_USER_AGENT} UP.Browser RewriteRule ^$ /au.html [R]
おっと、ひとつ書き忘れていました。 >pc.html →pc.php softbank.html→softbank.php au.html→au.php docomo.html→ docomo.php にしてindex.phpと一緒にサーバーに転送すれば良いと言うことですよね? 多分、想像されていることと当方の回答には大きな隔たりがあります。貴殿はHTMLとPHPの違いを理解されていないようですね。単純に拡張子を変えるだけで自動的に振り分けてくれるわけがないでしょう。すぐに楽な方向に考えるようでは、先が思いやられます。 仕方ないので正解を教えます。 まず、共通関数ライブラリとして「common.php」を作り、そのファイルにPCと携帯を振り分ける関数を自作します(check_ua()関数と名づけます)。 ここで、check_ua()関数は、PC,d,a,s,wのいずれかを戻り値にとると約束します。 次に、index.phpをこのように書き換えます。 <?php include_once("common.php"); $ua = check_ua(); switch($ua){ case "PC": // PC用のページをinclude include("pc.html"); break; case "d": // docomoC用のページをinclude include("docomo.html"); break; case "a": // au用のページをinclude include("au.html"); break; case "s": // softbank用のページをinclude include("softbank.html"); break; case "w": // Willcom用のページをinclude include("willcom.html"); break; } 最後に、これをテンプレートとして、他のファイルも同様に作ります。
お礼
細々とありがとうございます。検索したり調べ中ですが、今のところ意味がわかりません^^;理解して解決したら報告させて頂きます。
>・携帯からパソコンのサイトアドレスにアクセスした場合に、アクセスしたのは携帯だから携帯のページへ! >・パソコンから携帯のアドレスにアクセスした場合には、アクセスしたのはパソコンだからパソコンのページへ! >というような振り分けまでしてくれる設定方法、またはプログラムはございますでしょうか? ユーザエージェントの偽装を無視するレベルで、PCと3キャリア+Willcomの振り分け関数を自作しましたよ。ユーザエージェントの仕様さえ知っていればすぐに作れますので、がんばって作ってみてください。念のため、ヒントをいくつか与えておきます。 ・$_SERVER['HTTP_USER_AGENT']を調べる! ・「HTTP_USER_AGENT 携帯」で検索! ・「携帯振り分けPHP」のindex.phpのソースを熟読!
少し落ち着きましょうね。ちなみに、「見れない」じゃなくて「見られない」が正しい表記です。いわゆる「ら抜き言葉」はこういう場では控えましょうね。 さて、本題。静的ファイルに直接アクセスしたら、携帯だろうがPCだろうがそのページが表示されるのは素人でもわかると思います。だから、全てのファイルをphpファイルにして、ユーザエージェントによる自動振り分けを共通関数で行えば解決します。 ちなみに、その「携帯振り分けPHP」というのは、「http://www.○○○.com/」に接続したときにユーザエージェントで振り分ける仕組みだと思いますが、その正体は「index.php」ではないですか?これは、あくまでPCでも携帯でも同一URLが使えることを保障しているだけで、振り分けた先のことまで面倒は見てくれません。使う前に、ReadMeなどをよく読みましょう。
補足
丁寧なご回答ありがとうございます。 >全てのファイルをphpファイルにして、ユーザエージェントによる自動振り分けを共通関数で行えば解決します。 pc.html →pc.php softbank.html→softbank.php au.html→au.php docomo.html→ docomo.php にしてindex.phpと一緒にサーバーに転送すれば良いと言うことですよね?しかしながら結果は同じでした。 >振り分けた先のことまで面倒は見てくれません。 そのようですね!問題なく振り分けされています! >静的ファイルに直接アクセスしたら、携帯だろうがPCだろうがそのページが表示されるのは素人でもわかると思います。 素人でもわかるような当然の現象でしたか(^^; 私が理想としているような・・・ ・携帯からパソコンのサイトアドレスにアクセスした場合に、アクセスしたのは携帯だから携帯のページへ! ・パソコンから携帯のアドレスにアクセスした場合には、アクセスしたのはパソコンだからパソコンのページへ! というような振り分けまでしてくれる設定方法、またはプログラムはございますでしょうか?
- yambejp
- ベストアンサー率51% (3827/7415)
>”携帯振り分けPHP” がよくわからないですが PEARにNet_UserAgent_Mobileっていうのがありますね
お礼
そのようなものもあるのですね。調べてみます!ありがとうございます!!
補足
アドバイスありがとうございます。PHPを利用することで振り分けまでは出来ているんです。 PHPを利用せずに.htaccessを利用することで、、 ・携帯からパソコンのサイトアドレスにアクセスした場合に、アクセスしたのは携帯だから携帯のページへ! ・パソコンから携帯のアドレスにアクセスした場合には、アクセスしたのはパソコンだからパソコンのページへ! の設定も可能になるのでしょうか?