【PHP】HttpUserAgentでPCとスマートフォンの表示を振り分ける方法

デバイス毎にUAで表示を振り分ける。

UA (ユーザーエージェント)とは?

ユーザーエージェント (User agent)とは、利用者があるプロトコルに基づいてデータを利用する際に用いるソフトウェアまたはハードウェアのこと。ユーザーエージェント

HTTPではUser-Agentヘッダーが定義されている。

クライアントはサーバーにリクエストを送る際に、ユーザーエージェントの情報をUser-Agentヘッダーとして送信する。

出典:ユーザーエージェント - Wikipedia

各デバイスの持つUA

iPhoneのUA

Mozilla/5.0 (iPhone
CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53※「iPhone」が含まれる

iPadのUA

Mozilla/5.0 (iPad
CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53※「iPad」が含まれる

iPadのUA

Mozilla/5.0 (iPod touch
CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53※「iPod」が含まれる

AndroidのスマホのUA

Mozilla/5.0 (Linux
Android 4.2.2
GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36※「Android」と「Mobile」が含まれる

AndroidのタブレットのUA

Mozilla/5.0 (Linux
Android 4.3
Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36※「Android」が含まれる

via:スマートフォンとPCをユーザーエージェントで振り分ける | Web Tipsvia: ユーザーエージェント - Wikipedia

PHPでの表示振り分けの例

strpos (上記特定の文字列が含まれるか) でデバイスを判定し、該当するデバイスをheader()で対象パスへリダイレクトさせる。


    /* 端末のUAを取得 */
    $ua = $_SERVER['HTTP_USER_AGENT'];

    /* iPhone/iPod/Androidスマホが該当 */
    if ((strpos($ua, 'iPhone') !== false)
    || (strpos($ua, 'iPod') !== false)
    || (strpos($ua, 'Android') !== false)
    && (strpos($ua, 'Mobile') !== false)) {
    header('Location: ./sp/');
    exit;
    }

    /* iPhone/iPad/iPod/Androidスマホ/Androidタブレットが該当 */
    if ((strpos($ua, 'iPhone') !== false)
    || (strpos($ua, 'iPod') !== false)
    || (strpos($ua, 'iPad') !== false)
    || (strpos($ua, 'Android') !== false)) {
    header('Location: ./sp/');
    exit;
    }