関数・変数

関数・変数

せっかく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>"
                                              ;
    ?>
この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30