PHPを始める前に知りたい、基本的な文法といくつかのタグ

2014年7月17日(木)
野田 貴子

関数・変数

せっかくPHPを使っているので、プログラムっぽいことをしてみましょう。

(1)ランダムな数値を出力する

アクセスするたびに結果が変わるように、ランダムな数値を出力してみます。

<ファイル>

    <html>
      <body>
        <p>今日のラッキー指数は <?php echo rand(); ?> ですよ!</p>
      </body>
    </html>

<実行結果>

    <html>
      <body>
        <p>今日のラッキー指数は 41522939 ですよ!</p>
      </body>
    </html>

rand() は、ランダムな数値を作ってくれる関数です。関数とは、仕組みを知らなくても、ルールさえ知っていれば使うことができるツールです。もちろん自分で関数を作ることもできますし、PHPに元から用意されている便利な関数も相当数あります。それぞれの関数にはそれぞれの書き方のルールがありますので、ぜひマニュアルを活用してください。PHPのバージョンによって関数のルールが変わることもありますので、注意してくださいね。

PHPのマニュアルへはこちらから行けますが、関数を調べたい時は、http://php.net/rand のようなショートURLをブラウザに直接打ち込むこともできます。関数については、後日また詳しく解説します。

(2)閲覧者の情報を出力する

次は画面を見ている人の情報を出力してみましょう。ブラウザはサーバーにリクエストを送る際、普通の人が想像している以上の情報を一緒に送っています。

(クリックで拡大)

PHPはこのような情報をサーバーから取得し、変数という入れ物に格納しています。echo では変数に格納された情報を出力することもできます。変数について詳しいことはまた後日取り上げますので、今回はだいたいの雰囲気を分かっていただければ大丈夫です。

<ファイル>

    <?php
    echo "あなたが直前に見ていたサイトは「";
    echo $_SERVER["HTTP_REFERER"];
    echo "」です。\n";
    echo "あなたがこの画面を見ているツールは「";
    echo $_SERVER["HTTP_USER_AGENT"];
    echo "」です。\n";
    ?>

$_SERVER["HTTP_REFERER"]$_SERVER["HTTP_USER_AGENT"] が変数です。この中に、直前に見ていたサイトの情報と、画面を見ているツール(ブラウザ)の情報がそれぞれ入っています。

<実行結果>

    あなたが直前に見ていたサイトは「http://localhost/index.php 」です。
    あなたがこの画面を見ているツールは「Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36」です。

実は、上の例は悪い例なのです。ブラウザから送られてきた情報は、そのまま使っては絶対にいけません。少し技術に詳しい人なら誰でも、これらの情報を悪いように書き換えることができるからです。例えば掲示板を想像してみてください。入力されたコメントの他に、その人が使っているブラウザの情報を自動で登録するとします。ブラウザから送られてきた情報をそのまま登録して表示すると、このようになりますね。

(クリックで拡大)

しかしもし、ブラウザの情報がいかがわしいサイトへのリンクにすり替えられていたらどうでしょう。ブラウザの情報の代わりにいかがわしいリンクが登録されてしまい、画面を見た別の人が、そのリンクをクリックしてしまうかもしれません!掲示板を作った人は悪いことをするつもりがないのに、悪意のある第三者に利用されてしまうのです。

(クリックで拡大)

このような場合にどうしたら良いかは、また後日取り上げたいと思います。

PHPに限ったことではありませんが、変なデータが送られてきた場合や、何かの不具合でデータが取れなかった場合などなど、通常は起こりえないことについても、すべてプログラミングしておく必要があるというのが、プログラミングの難しい部分です。しかも、そのような処理の方が、メインのプログラムよりも多くなることがほとんどなのです。単に動くものが作れることと、製品が作れることの差はこのようなところにあります。

大文字小文字

この後は少し簡単な話を続けて終わりたいと思います。echo のようなキーワードも rand() のような関数も、大文字と小文字を区別しません。以下の各行はどれも同じ処理になります。ですが、普通は一行目のように小文字で(マニュアルで指定されている通りに)書きます。

<ファイル>

    <?php
    echo rand();
    ECHO RAND();
    Echo Rand();
    EchO rANd();
    ?>

ホワイトスペース

PHPのコードの体裁についてです。これまでの例のように、PHPのコードにはところどころにセミコロン(;)が書かれています。これは文の区切りを表します。

    <?php
    echo "<p>";
    echo "ようこそ!";
    echo "</p>";
    ?>

セミコロンや echo の前後には、スペースやタブ、改行などの「ホワイトスペース」と呼ばれる文字があってもなくても構いません。普通は人間が読みやすいように、echo の後ろにスペースを入れたり、一文ごとに改行しますが、このように詰めて書くこともできますし、

    <?php echo "<p>"; echo "ようこそ!"; echo "</p>"; ?>

このように離して書くこともできます。

    <?php
    echo "<p>";


    echo                    "ようこそ!";                   echo 
              "</p>"
                                              ;
    ?>

1983年生まれ。大学卒業後、ソフトウェア開発の営業を経て、ソフトウェア開発業務に転向。現在は自社パッケージのフロントエンド開発のほか、PHPでの受託開発案件、日→英のローカライズ案件などを担当。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています