目指せ毎日更新シリーズ第3弾として、PHPのスーパーグローバル変数について紹介してみる。
スーパーグローバル変数というと、何だかすごくカッコ良さそうな名前だけど、簡単に言うと、Webページ間を行ったり来たりするときに情報のやり取りのために裏で持たせておく情報を保存する場所といったところか。
まずは、$_GETについて。使われる場面としては検索フォームの検索ワードとかブログの何ページ目を見ているかとかの情報で、例えばこのブログの2017年1月のアーカイブのURLに出ている?m=201701がそれにあたる。意味はmというパラメータに201701という値を入れてリクエストを送信したということ(これをGET送信という)。GET送信では複数のパラメータを送ることもできて、2つ目以降だとこんな風に&でつながれる。
デバッグするときは
<?php var_dump($_GET['cat']); ?>
とやると上のケースでは4が入っていることがわかる。
次は$_POSTについて。これは画像ファイルを送信したり掲示板にコメントを送信したり、URLには入りきらないような大きなデータを入れるのに使う。
<form action="post.php" method="post"> <input type="text" name="comment"> <input type="submit" value="送信"> </form>
このようなフォームのテキストボックスに「こんにちは」と入れて送信すると、post.phpでは$_POST[“comment”]に「こんにちは」が入っていることになる。
それ以外ではクッキーの値が入る$_COOKIEと、セッションの変数を保存する$_SESSIONが比較的よく使われる。
クッキーはWebページのユーザー情報なんかをブラウザに持たせて読み込ませるためのもので、
setcookie('id', $id, time() + 60 * 60 * 24 * 7);
みたいにsetcookie関数を使ってクッキーをブラウザに保存させることができる。この例だと$_COOKIE[‘id’]に$idの値を1週間保存させるということになる。
セッションはクッキーとは逆にサーバー側に情報を保存させるためのもの。
ユーザーのログイン情報とかを保存するのに使われる。
他にどんなものがあるかなどは公式ページを見てください。
とここまで書いてきて何だが、実は自分は仕事ではこれらはほとんど使っていなかったり。なぜなら、仕事ではフレームワークを使っていて、これらのスーパーグローバル変数はフレームワークの関数でラッピングされているからなわけで。