• ベストアンサー

PHPを使ってスマホサイトとの振り分け

アクセスしてきたユーザーがスマホかPCかによってページの表示を切り替えるPHPが作りたいです。 切り替えの基準は、画面の横幅で、スマホ用のOSでもタブレットならPC表示にしたり、スマホを横に使っているならPC表示でもいいような使用にしたいのですが、可能でしょうか? 自分の構想の中では <?php if (画面の横幅>480dpi{ パソコンページのHTMLを吐く } 画面の横幅<480dpi{ スマホページのHTMLを吐く } ?> といった形にしたらいいと思ったのですが、現実的に作る方法がわかりません。画面の横幅をとってくる方法(無理ならば画面サイズ)を教えてください。

  • PHP
  • 回答数4
  • ありがとう数1

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

  • ベストアンサー
回答No.2

まず質問者の方法は現実味がない。と言うかスマホでもHD画質や近々フルHD搭載の端末も出てくる。 そうなると縦向きですらスマホでも解像度が横で480をオーバーする。 でも、液晶のサイズは小さいのでそこにPCサイトを表示されたら見にくいしタッチなどの操作がやりにくい。 解像度で処理を振り分けられるのは完全に迷惑。 しかも画面を横向きにされたとしてもPCの表示されるのは非常に使いにくい。 単純にUAでPCサイトとスマホサイトとスマホサイトを切り替えるだけの方が良い。 それとそのif文だと480に対して=(>=,<=)が無いから480ちょうどの場合、どっちの処理も通過せずに 処理が終了するという致命的な事になっている。 後言えるのは今時はテンプレートエンジンではき出すhtmlなんて簡単に切り替えれるから >CSSを切り替える方が楽だと思います なんて処理はする必要もなくもっと最適化されたhtmlを切り替えられる。

satisfied999
質問者

お礼

みなさんありがとうございました。 基本はUAで切り替えて、ユーザーの任意で切り替えれる形にすることにします。 UAの提案を最初にしてくださった方にベストアンサーとさせていただきます。

その他の回答 (3)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.4

UAで判断した上で、ユーザーに任せる。 他の人も言ってるけど、docomo の Optimus G pro なんて 5インチなのに 解像度 1,080×1,920 です。 自分の知ってるサイトだとUAで判断して、「スマホ用のページあるけど、そっち表示する?」みたいな confirm 表示するトコもあります。 スマホでyahoo見てもらえれば分かりますが、一番下に[ 表示 : モバイル | パソコン ] て切り替えようのリンクがあります。 俺の結論としては、端末側だけでの判断は限界がある。って事です。

回答No.3

UAで切り替えるに一票 「画面幅でCSS切り替えるだけのほうが HTML2つも書かなくていいから楽なんじゃね?」 とか思ってごちゃごちゃやってみましたが スマホにはスマホで見やすいHTMLの構造ってのがあって CSSの切り替えだけじゃどうにもならんかったです ググればいくらも出てきますが、こんなカンジので判定できます function is_mobile(){ $ua = $_SERVER['HTTP_USER_AGENT']; $mobaile_ua = array('iPhone','iPod','Android','dream','CUPCAKE','blackberry', 'webOS','incognito','webmate' ); return preg_match('/'.implode('|', $mobaile_ua).'/i', $ua); }

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

JavaScriptで取得して送るしかありません。なので確実に一画面挟む形になります。「JavaScript 画面サイズ」で検索してください。 #一度取得すればCookieにでも入れておけばいいと思いますが・・・ それよりも画面サイズでCSSを切り替える方が楽だと思います。「MediaQuery」(もしくはMedia Queries)で検索してください。

関連するQ&A

  • PHPで切り替えてもモバイルフレンドリーになる?

     Googleがスマホに対応してないサイトは順位を下げることを決めたそうですね。  モバイルフレンドリーになるには、画面の幅によってCSSを切り替えたりして、サイトの幅やレイアウトなどに変化をつけるのが基本のようですが、これ、PHPなどでブラウザの情報を元に表示するファイルやHTMLなどを変える方法だと、どう判断されるのでしょうか?  HTMLのヘッダ部分に、CSSの切り替えタグがあって、その先のCSSの内容によってクローラーが判断しているなら、PHPなどでHTMLの出力内容そのものを変えたり、PCやスマホによって.htaccessで専用ページに飛ばす方法じゃ、ただのPCサイトと判断されそうですよね。  それともクローラー自体がPC向け用とスマホ向け用に別れていて、PHPなどの切り替えにも対応できているのか・・・。  この辺、どうなってるんでしょうか?

    • ベストアンサー
    • SEO
  • スマホからアクセスしたサイトの表示について

    質問お願いいたします。特にスマホに特化しているわけではなく、通常のPCサイト(HTML4+CSS)があるとします。 iOS、アンドロイドやブラウザに関係はしていないとおもいますが、サイトにより、いきなり全画面(横幅いっぱい)で表示される場合と、ページの左上(例えばこのページだと教えて!gooのアイコン周辺)が拡大されて表示される場合があります。 これらはなにか条件によって異なるのでしょうか? 現在、サイトを複数運営していますが、後者のように、どのページでも最初のアクセスでは拡大して表示が可能であればアドセンス広告などをその位置に貼りたいと考えています。 詳しい方、よろしくお願いいたします。

    • 締切済み
    • CSS
  • C#でスマホサイトを表示

    C#でスマホサイトを表示させたいのですが、方法を知っている方はいらっしゃいますか? URLを変数に入れると、PCページとスマホページ両方のHTMLがもってこれたりするものが作りたいです。

  • 振り分けはできますが、携帯サイトをかんたんに

    PHPを使った振り分けはできます。 しかし、PC←→携帯と相互互換性のあるサイトを 作る上で、どんな方法がいちばん楽でしょうか? PCページの内容と内容は変えないで携帯サイトに 表示させたいと思います。 if文で携帯と判断したら keitai.htmを出力 タグをすっきりさせ、変数表示 という方法が一番楽でしょうか? もしくはPHPのライブラリに携帯サイトを作る上で 便利にできるクラスがあったら教えてください。

    • ベストアンサー
    • PHP
  • HTML、CSS、スマホの時だけ全画面表示にしたい

    パソコン向けにサイトを作成しまして、横幅800pxと指定しているのですが、スマホで表示すると全画面表示の方が見やすいので、スマホの時だけ全画面表示にできるHTMLかCSSの指定方法はありますか? パソコンで表示させた時は、横幅800pxのままにしたいです。

  • スマホ用ページへの振り分け

    今、スマートフォン用のホームページを作っています。 PC用ページからスマートフォン用のホームページへ飛ばす方法を質問させてください。 現在、ページにJavascriptを埋め込み、UserAgentで判断してiPhone、iPod、Androidの場合は、 スマートフォン用のページに自動で飛ばす仕組みを作っています。 この作り方だと問題がありまして、 例えば、Android4.0の標準ブラウザやAndroid用Google Chromeでは 「デスクトップ版を表示」や、「PC版サイトのリクエスト」というのがあります。 スマホでYahoo!やAmazonのスマホ用ページを表示した後、ブラウザでこのチェックを付けるとPC版のページを表示します。 自分の作ったページでは、UserAgentで判断してページ自体を違うページに移動してしまっているので、 「デスクトップ版を表示」にチェックしてもPC版ページを表示しません。当然です。 質問ですが、 1.Yahoo!やAmazonのページは、どういう仕組みで、PC用とスマホ用ページを振り分けているのでしょうか? 2.ブラウザの「デスクトップ版を表示」のチェックがやっていることは、 UserAgentを偽装してPC用のUserAgentを吐き出しているだけ、という理解は正しいですか? 以上、宜しくお願いします。

    • ベストアンサー
    • HTML
  • phpの書き方

    php初心者です 長いコードを書く場合、getで送られてくる情報を元に2つのページを表示する場合(例えばHTMLは同じだけど表示内容が違う場合など) 1つのphpでif文で分岐させる方法と 2つのphpファイルを作って処理させる方法どちらがいいですか? 負荷とか、転送量、メリット、デメリットを教えてください 他に優れた方法はありますか? よろしくお願いします

    • ベストアンサー
    • PHP
  • スマホ用にランディングページを

    早速ですが、質問させていただきます。 スマホ向け横幅いっぱいのランディングページを製作中です。 スマホと言えば調べるとさまざまで、 PC用ならば72dpiとする所だとおもいますが、 スマホ用にはどのように設定すればベストでしょうか? 傾けた時のために縦幅に合わせなければならない等あるのでしょうか。 一度試しに自分サイトにあげてみた画像が ぼやけたような感じになってしまいます。 よろしくお願い致します。

    • ベストアンサー
    • CSS
  • スマホとPCで表示画面を切り替えられますか?

    現在、Webサイトを作成しておりますが、気になることがでてきました。 それは、スマホユーザーとPCユーザーで表示する画面を切り替えることはできるのか?ということです。 私としては、スマホ用とPC用のHTMLファイルをそれぞれ作成し、スマホユーザーにはスマホ用のHTMLファイルを呼び出し、PCユーザーにはPC用のHTMLファイルを呼び出すことができればと思っております。 これは、もしかしてPHPを使えばできるのでしょうか? その場合、切り替え方を簡単にで良いので教えて頂けないでしょうか? 詳しく教えて頂ければ、何より幸いですが、どうぞ宜しくお願い致します。 ちなみに、PHPを使い、メールフォームは作成したことがあります。

    • ベストアンサー
    • PHP
  • スマホのPCサイト

    スマホのPCサイトと同じ画面をPCで見た場合、消費する容量は同じですか? また、スマホ用・タブレット用の画面は、PC用の何%程度ですか?

専門家に質問してみよう