• ベストアンサー

index.phpでPCからと携帯からのアクセスの自動振分け

こんにちは。phpでindex.phpを作りアクセスしてきた人が携帯かPCかを見分けて自動で各トップページに飛ぶページを作れますか? 自動で飛ばすのはheader関数のLocation(?)を使えば可能だと思うのですが問題はアクセスしてきた人が携帯かPC かを見分ける方法がわかりません。 もしそんな方法があるのでしたらご教授いただけないでしょうか? よろしくお願いします。

  • PHP
  • 回答数5
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • kaz_iwa
  • ベストアンサー率27% (10/37)
回答No.2

#1です J-PHONE. DoCoMo. EnvDirecUP.(auやH') 各キャリアのUSER_AGENTです。 ちなみにauはHDMLで記述されてる必要があります のでauだけ別ページになります。 後XREAのように広告が↑に付く無料サーバーだと header Locationはエラーになるので注意する必要が あります。

amountainblast
質問者

お礼

ありがとうございます。 auはhtmlとは記述が違うのですね。 でもドコモもj-phoneもpCで見るのとは使えるタグが少ないらしいですので、頑張って作って見ます。 ありがとうございました。

その他の回答 (4)

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.5

回答が得られたようなので、最後に雑談です(笑) 超簡単に偽装できますよ。 Windowsは使わないのでIEは知りませんが、ネットスケープだと、pref.agentあたりをいじれば、あら不思議!「ネットスケープがDoCoMo…なんて環境変数をはき出します。 とまあ、色々な事をする人がいるわけですから、出来るだけしにくいコードを書くことが重要です。 では

  • R34_666
  • ベストアンサー率25% (17/66)
回答No.4

みなさん言ってますが、簡単にであればHTTP_USER_AGENTでいいですが、USER_AGENTは偽装出来るので確実にやるならREMOTE_ADDRでIPのチェックした方が良いでしょう。 以下、各社のIPアドレスと端末情報載ってます。 DoCoMo http://www.nttdocomo.co.jp/p_s/imode/make/spec/index.html Vodafone http://www.dp.j-phone.com/dp/ au http://www.au.kddi.com/ezfactory/tec/index.html ちなみにIP割り振りの場合、ドコモ以外は数多いし、中途半端に始まったりでえらい大変です。 私の場合はそこまで厳密にやらなくても良いって事でREMOTE_ADDRからサーバ名に置き換えて割り振りしてます。

amountainblast
質問者

お礼

ご回答ありがとうございます。 IPの振分けですが、確かに大変そうですね。 私の場合もPHPの勉強から少し応用として今回のようなことをやろうとしているのでHTTP_USER_AGENTと言う方法が分ければ十分です。しかし今後もし厳密にすることが必要になれば試してみたいと思います。ありがとうございました。

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.3

簡易的で良ければNo1の解答の通りでいいと思います。 が、ぶっちゃけUserAgentなんて超楽勝に改竄できます。 もう少し本気で振り分けしたければ(絶対にPCでアクセすられたくないとか…)REMOTE_ADDRによって、各社のIPアドレスの範囲指定で振り分けた方がいいですよ。

amountainblast
質問者

お礼

ご回答ありがとうございましす。 >ぶっちゃけUserAgentなんて超楽勝に改竄できます。 そんな簡単に出来るんですね。 でもやろうとしていることが 現在PHPの勉強をしていて メールフォームを使ってメールを送るのにPCだけでなく携帯からも送信できるようにするにはどうしたらいいかな???程度なんでそんな本気で振り分ける必要もないんで…でも改竄できるなんて知りませんでしたので勉強になりました。ありがとうございます。

  • kaz_iwa
  • ベストアンサー率27% (10/37)
回答No.1

環境変数の$_SERVER[HTTP_USER_AGENT]を取得して その環境変数内にdocomo等の文字があれば携帯頁に Locationさせればイケます。 $ua = $_SERVER["HTTP_USER_AGENT"]; if(ereg("DoCoMo",$ua)){ header("Location: http://localhost.com/i_mode.php"); exit; } こんな感じだと動くはずです。

amountainblast
質問者

お礼

早速のご回答ありがとうございます。 なるほど環境変数にそのような情報があるわけですね。 あつかましいですがもう一つすみません。 docomoだとDoCoMoでしたら ボーダフォンやauの環境変数は何なんですか?

関連するQ&A

  • 【PHP・.htaccess】PCと携帯の振り分けについて

    【PHP・.htaccess】PCと携帯の振り分けについて お世話になります。 PHP・.htaccess共に初心者なのですが、 PCサイトと携帯サイトの振り分けで悩んでいるので宜しくお願い致します。 現在の構成が http://sample.com/ ←トップページ(PHPファイルのみ。各トップへ振り分け) http://sample.com/pc/ ←PCトップページ http://sample.com/mo/ ←モバイルトップページ(.htaccessでIP制限。PCからのアクセスはトップへ) ---------------------------------------------------- 振り分けPHP(http://sample.com/) <?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: http://sample/mo/"); exit; }else if(preg_match("/^(J-PHONE|Vodafone|MOT-[CV]|SoftBank)/i", $agent)){ header("Location: http://sample/mo/"); exit; }else if(preg_match("/^KDDI-/i", $agent) || preg_match("/UP.Browser/i", $agent)){ header("Location: http://sample/mo/"); exit; }else{ header("Location: http://sample/pc/"); exit; } ---------------------------------------------------- となって居ますが、都合により http://sample.com/ ←PCトップ モバイルからのアクセスはmoに振り分け。 http://sample.com/mo/ ←モバイルトップページ。(.htaccessでIP制限。PCからのアクセスはトップへ) 上記の形に切り替えたいと思っています、 PHPを使って振り分けをしたいと思っているのですが、 上記の形を再現する事は出来ますでしょうか? また、.htaccessを利用する事により解決が出来るのであれば、 そちらもご教授いただけると幸いです。

    • 締切済み
    • PHP
  • PHPで携帯・PC振り分け

    PCサイトと携帯サイトを作りました。 同じURLで、それぞれからアクセスした場合に 最適のページが表示されるようにしたいと思います。 phpを利用したいのですが、 どこに埋め込んでよいのかわかりません。 PCのトップページはindex.phpなのですが、 このページの1行目から振り分けのphpソースを書き込んだのですが、間違ってるでしょうか? http://www.marguerite.to/Nihongo/Labo/PHP4Mobile/PageDistribution.html ↑これをURLだけ書き変えれば使えると思ったのですが、大きな間違いを犯してますでしょうか? どこに設置すればよいのでしょうか。 動作結果は、PCから閲覧した場合に ずっと「ページを読み込んでいます」と表示されて 真っ白なままになります。 携帯からはスムーズにアクセスでき、きちんと携帯用ページが表示されました。 よろしくお願いしますm(_ _)m

    • 締切済み
    • PHP
  • index.swfをPHPで読み込む

    <?php //User Agent 取得 $agent = $header[\"User-Agent\"] ; header(\"Location: /index.swf\"); exit; } ?> というPHPをくみましたがindex.swfをトップページで表示させることができません。 htmlに直接入れ込むのではなく、読み込み方式をとりたいのです。 なにか間違いがあるのでしょうか? お願いします。

    • 締切済み
    • PHP
  • 携帯とPCの振り分け

    同じドメインにて携帯とPCの振り分けなのですが、htaccessにて振り分けたのですが、ブラウザに「振り分けがループしています」とでるのですが、 これはなぜでしょう? htaccessの中身の内容ですが、 DirectoryIndex index.php index.html index.htm これで読み込んだindex.phpの中身は <?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: http://www.○○○○○.com/mobile/index.xhtml"); exit; }else if(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){ header("Location: http://www.○○○○○.com/mobile/index.xhtml"); exit; }else if(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){ header("Location: http://www.○○○○○.com/mobile/index.xhtml"); exit; }else{ header("Location: http://www.○○○○○.com/"); exit; } ?> サーバはlolipopでhtaccessのパーミッションは604で phpのパーミッションは700です。

    • 締切済み
    • CGI
  • PCと携帯の振り分けについて教えてください

    PCと携帯の振り分けについて教えてください。 htaccessで、ユーザーエージェントの判断で、PC用のトップページと 携帯用のトップページへ振り分けを行ったのですが・・・ http://xxx.com/ だと正常に携帯トップページへ振り分けられるのですが、 http://xxx.com/index.htmlだと携帯からでもPCのトップページが 表示されてしまいます。 いろいろ調べたのですが、携帯はMETAタグのリフレッシュ?に対応していないから、http://xxx.com/index.htmlのindex.htmlを携帯用に作成してPCのトップページは別に作成するとか・・・書いてありました。 http://xxx.com/index.htmlにアクセスした場合は、htaccessは有効にならないのでしょうか? 他にどのような対応方法があるのでしょうか? できれば、現PC用のindex.htmlを使用したいのですが・・・ よろしくお願いします。

  • ホームページPC/携帯自動振り分け

    クライアントのホームページを作成しておりますが、 某レンタルサーバ・独自ドメインでPC用HP運営中です。 携帯用サイトも作り、同アドレス「www.○○○.com」で自動振り分けしたいと思います。 PC用のトップページは「index.html」のままにしたいのですが、 当初、phpにて行おうと取り組みましたが、 サーバ側の.htaccessの規制により indexファイルの順位を変えることが出来ないようで、 (.htaccessを書き換えたらエラーに)一度断念しました。 何か良い方法(php以外でも)はないでしょうか? ■.htaccess 利用可能なディレクティブはAuthConfigとLimitのみ ■indexファイルの優先順位 index.html/index.htm/index.cgi/index.php/index.shtml/index.wml/index.hdml  ■php、perl、CGI使用可能 ◎希望条件・・PC用のトップページは「index.html」 以上、宜しくお願いいたします。

  • index.htmlからindex.phpへ

    .htaccessファイルを使ってトップページ(index.html)にアクセスした時に(index.php)に移動できるようにして(index.php)が、トップページに変わるようにしたいのですが方法が分かりません。 借りているサーバーは対応するようです。 自分でも検索してみましたがよく分かりませんでしたので質問しました。 ご存知の方がいれば教えてほしいです。 よろしくお願いします。

    • 締切済み
    • PHP
  • phpのユーザーエージェントでの振り分け方法

    phpのユーザーエージェントでの振り分け方法 質問お願いします。 phpのユーザーエージェントでの振り分け方法を調べまして $ua = $_SERVER['HTTP_USER_AGENT']; if ((strpos($ua, 'Android') !== false) && (strpos($ua, 'Mobile') !== false) || (strpos($ua, 'iPhone') !== false) || (strpos($ua, 'Windows Phone') !== false)) { // スマートフォンからアクセスされた場合 header("Location: smartphone/index.html"); exit(); } elseif ((strpos($ua, 'Android') !== false) || (strpos($ua, 'iPad') !== false)) { // タブレットからアクセスされた場合 header("Location: tablet/index.html"); exit(); } elseif ((strpos($ua, 'DoCoMo') !== false) || (strpos($ua, 'KDDI') !== false) || (strpos($ua, 'SoftBank') !== false) || (strpos($ua, 'Vodafone') !== false) || (strpos($ua, 'J-PHONE') !== false)) { // 携帯からアクセスされた場合 header("Location: mobile/index.html"); exit(); } else { // その他(PC)からアクセスされた場合 header("Location: pc/index.html"); exit(); } とコピペで記入してスマホなどを振り分けています。 safari6とsafari7で見た時だけ header("Location: tablet/index.html"); に振り分けたいのですが、どうしたらよいでしょうか? 素人ですいません。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 携帯サイト【PCからのアクセスを飛ばしたい】

    質問宜しくお願いします。 現在、携帯端末向けサイトを作っております。 そこで質問なのですが… ■public_html │└■PC │ └index.html  ←PC用トップページ ├index.html  ←携帯用トップページ というディレクトリ構成を考えています。 携帯用トップページにアクセスがあったとき、 携帯端末ならそのままページ表示をさせ、 PCからのアクセスならPC用トップページへ 移動させることは可能でしょうか? Googleなどでもわかる範囲で調べたのですが、 当方PHPに関して全くの初心者でして、 この質問内容を実現させるのがPHPなのかもあやふやです>< 使用レンタルサーバは、ロリポップです。 PHPに詳しい方、また同じ経験を持つ方、 ご返答頂けましたらありがたいです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 携帯、スマートフォンのPHP振り分け

    こんなPHPを書いているのですが どうしてもParse errorが出ます。 解決方法を教えて下さい!! ■エラー内容 Parse error: syntax error, unexpected T_EXIT in /home/sites/heteml/users/web/m/index.php on line 5 ■振り分けPHP <?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: ​http://www.hogehoge.com/m/i/index.html");​ exit; }else if(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){ header("Location: ​www.hogehoge.com/m/s/index.html");​ exit; }else if(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){ header("Location: ​www.hogehoge.com/m/e/index.html");​ exit(); }else if(preg_match("iPhoneやスマートフォン用の判定", $agent)){ header("Location: www.hogehoge.com/m/smt/index.html"); exit(); }else{ header("Location: ​www.hogehoge.com/m/pc/index.html");​ exit(); } ?> よろしくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう