• ベストアンサー

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

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

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

  • ベストアンサー
回答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