PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのスーパーグローバル変数とは?一覧と使い方を徹底解説

はじめに

PHPでは、ユーザーが定義する変数のほかに、あらかじめシステム側で用意されている定義済み変数が存在します。これらはスーパーグローバル(superglobals)と呼ばれ、最大の特徴はglobalキーワードを宣言しなくても、関数やメソッド内のどこからでも常にアクセスできる点です。

スーパーグローバルはPHP 4.1.0以降で利用可能となっており、Webアプリケーション開発においてフォーム処理やセッション管理などを行う際に欠かせない存在です。本記事では、PHPで利用できる主なスーパーグローバル変数の一覧と、それぞれの役割をわかりやすく解説します。

スーパーグローバル変数の一覧

$GLOBALSグローバルスコープで利用可能なすべての変数への参照
$_SERVERサーバー情報および実行環境に関する情報
$_GETHTTP GET変数(URLパラメータ)
$_POSTHTTP POST変数(フォーム送信データなど)
$_FILESHTTPファイルアップロード変数
$_REQUESTHTTPリクエスト変数($_GET・$_POST・$_COOKIEの内容を含む)
$_SESSIONセッション変数
$_ENV環境変数
$_COOKIEHTTPクッキー
$php_errormsg直前に発生したエラーメッセージ
$HTTP_RAW_POST_DATA生のPOSTデータ
$http_response_headerHTTPレスポンスヘッダ
$argcコマンドラインからスクリプトに渡された引数の数
$argvコマンドラインからスクリプトに渡された引数の配列

代表的なスーパーグローバルの使い方

$_GET:URLパラメータの受け取り

example.php?name=taro のようにURLに付加された値を受け取る場合に使用します。

<?php
$name = $_GET['name'] ?? '';
echo 'こんにちは、' . htmlspecialchars($name, ENT_QUOTES) . 'さん';
?>

$_POST:フォーム送信データの受け取り

HTMLフォームからPOSTメソッドで送信されたデータを受け取る際に使用します。

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $comment = $_POST['comment'] ?? '';
}
?>

$_SESSION:ログイン状態の保持

session_start() を呼び出した後に利用することで、ページをまたいだユーザー情報の保持が可能になります。

利用時の注意点

  • $php_errormsg はPHP 8.0で削除されました。代わりに error_get_last() 関数を使用してください。
  • $HTTP_RAW_POST_DATA も廃止されており、生のPOSTデータが必要な場合は php://input ストリームを読み取ります。
  • $_GETや$_POSTなどの外部入力値は信頼できないため、必ずバリデーションとサニタイズ(htmlspecialchars() など)を行いましょう。

まとめ

スーパーグローバル変数は、スコープを意識せずにアクセスできる便利な定義済み変数です。ただし、外部からの入力を扱う変数も多いため、セキュリティ対策を徹底しながら適切に活用することが重要です。

  1. PHPのextract()関数とは?使い方とパラメータを徹底解説

    extract()関数とはPHPのextract()関数は、配列のキーと値を現在のシンボルテーブルに変数としてインポートする関数です。連想配列の各要素が「キー名=変数名、値=変数の値」として展開され、戻り値としては正常に抽出された変数の個数が返されます。構文extract(arr, rules, prefix)パラメータarr − 変数として展開したい対象の配列を指定します。rules − 無効な変数名や既存変数との衝突(コンフリクト)が発生した場合の扱い方を指定します。指定できる値は以下の通りです。EXTR_OVERWRITE − デフォルト値。同名の変数が既に存在する場合、既存の変数を上書

  2. JavaScript変数の値をPHPに渡して取得する方法をわかりやすく解説

    JavaScript変数をPHPで扱う基本の考え方JavaScriptとPHPは実行されるタイミングが異なります。PHPはサーバーサイドで先に処理され、JavaScriptはその結果を受け取ったブラウザ(クライアントサイド)で後から動作します。そのため、JavaScriptの変数をPHPへ「直接」渡すことはできず、何らかの方法でサーバーへ値を送信する必要があります。ただし、同じページ内でJavaScriptの変数の値を出力・表示するだけであれば、以下のように簡単に実現できます。同じページ内でJavaScript変数の値を表示するサンプルコード<script> var res