携帯電話向けサイトでのPHPの応用・端末振り分け(1)。

PHPはHTML文書に埋め込まれるものなので、HTML以外のリソースを扱う事は出来ないと思い込んでいました。しかし、header函数などを用いる事で、HTML以外のテキスト系リソースを扱ったり別のリソースを送出する事も出来るようです。

下記は、この特徴を用いて、主な携帯端末向けにページを振り分けるものです。

ソースコードと解説。

<?php
    $title="サイト名称";
    $page_e='EZウェブ専用ページのURL';
    $page_j='ボーダフォン専用ページのURL';
    $page_i='一般携帯電話対応ページのURL';
    $page_h='H"リンク専用対応ページのURL';

    $i=$_SERVER['HTTP_USER_AGENT'];
    //EZウェブHDML機か。
    if (preg_match("/UP\.Browser\/[3-5]/",$i)) {
        header('Content-Type: text/x-hdml;charset=shift_jis');
        echo('<hdml version="3.0" markable="TRUE" public="TRUE">');
        echo('<nodisplay markable="TRUE" public="TRUE" title="'.$title.'">');
        echo('<action type="ACCEPT" task="GO" dest="'.$page_e.'">');
        echo('</nodisplay>');
        echo('</hdml>');
        exit();
        }

    //ボーダフォン在来機か。
    if (preg_match("/J-PHONE\//",$i)) {
        header("Location: $page_j");
        exit();
        }

    //H"リンクか。
    if (preg_match("/PDXGW\//",$i)) {
        header("Content-Type: text/plain");
        echo("From: $page_h\n");
        echo("Subject: $title\n");
        echo("Content-Type:Text/X-PmailDX\n");
        echo("\n");
        echo("<SEL=99;$page_h>\n");
        echo("<BODY=000000;BG=FFFFFF>\n");
        echo("$title\n");
        echo("\n");
        echo(" いらっしゃいませ。ご訪問ありがとうございます。\n");
        echo(" ------------\n");
        echo("99⇒メニュー\n");
        echo("「99」を入力して下さい。\n");
        exit();
        }

    //iモード/EZウェブ次世代機/エアーH"フォンなどの携帯端末一般。
    if (preg_match("/DoCoMo\//",$i) ||
        preg_match("/Opera[\s\/]/",$i) && !(preg_match("/(Win|Mac|Linux|FreeBSD|OS\/2|Solaris)/i",$i)) ||
        preg_match("/UP\.Browser/",$i) ||
        preg_match("/\AVodafone/",$i) ||
        preg_match("/\ASoftBank/",$i) ||
        preg_match("/\AMOT-/",$i) ||
        preg_match("/DDIPOCKET;/",$i) ||
        preg_match("/WILLCOM;/",$i) ||
        preg_match("/L-mode\/\//",$i)) {
        header("Location: $page_i");
        exit();
        }
?>

    (以下、PC向けトップページのHTMLが続く)


ページ外へのご案内。