PHPのスーパーグローバル変数を理解するための10ステップ

PHPのスーパーグローバル変数の使い方を解説する図解PHP
この記事は約8分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

PHPのスーパーグローバル変数について深く理解することで、より効率的で、安全なコーディングが可能になります。

この記事を読むことで、PHPのスーパーグローバル変数の基本的な概念から応用例、注意点、カスタマイズ方法までを学び、PHPでの開発スキルを一段階進化させることができます。

●PHPのスーパーグローバル変数とは

PHPにはスーパーグローバル変数と呼ばれる特別な変数があります。

これは、どのスコープからでもアクセスできる変数で、PHPが提供している便利な機能の一つです。

○スーパーグローバル変数の基本

PHPのスーパーグローバル変数には次のようなものがあります。

  • $_GET
  • $_POST
  • $_REQUEST
  • $_SESSION
  • $_COOKIE
  • $_FILES
  • $_ENV
  • $_SERVER
  • $GLOBALS

    これらの変数は、ユーザーからの入力データの取得や、セッション管理、ファイルアップロードなど、さまざまな機能をサポートしています。

●スーパーグローバル変数の使い方

それでは、具体的にスーパーグローバル変数の使い方を見ていきましょう。

まずは、$_GET、$_POST、$_SERVERの基本的な使い方から見ていきます。

○サンプルコード1:$_GETを使ったフォームデータの取得

このコードでは$_GETを使ってフォームデータを取得する例を示しています。

この例では、ユーザーから送信された’name’という名前のデータを取得し、それをechoを使って表示しています。

○サンプルコード2:$_POSTを使ったフォームデータの送信

このコードでは$_POSTを使ってフォームデータを送信する例を示しています。

この例では、’name’という名前のデータを$_POSTを通じて取得し、echoを利用して表示しています。

<?php
if(isset($_POST["name"])){
    $name = $_POST["name"];
    echo "Hello, " . htmlspecialchars($name, ENT_QUOTES, 'UTF-8') . "!";
}
?>
<form method="post" action="">
    <input type="text" name="name">
    <input type="submit" value="Submit">
</form>

○サンプルコード3:$_SERVERを使ったサーバー情報の取得

このコードでは$_SERVERを使ってサーバー情報を取得する例を示しています。

この例では、サーバーの名前と、リモートホストのIPアドレスを取得しています。

<?php
echo $_SERVER['SERVER_NAME'];
echo $_SERVER['REMOTE_ADDR'];
?>

●スーパーグローバル変数の応用例

それでは、より高度な使い方を見ていきましょう。

セッション管理、クッキー管理、ファイルアップロード、環境変数の利用といった、スーパーグローバル変数の応用例を学びます。

○サンプルコード4:$_SESSIONを使ったセッション管理

このコードでは$_SESSIONを使ってセッションを管理する例を示しています。

この例では、’name’という名前のデータを$_SESSIONを通じて保存し、その後に取得して表示しています。

<?php
session_start();
if(isset($_POST["name"])){
    $_SESSION["name"] = $_POST["name"];
    echo "Hello, " . htmlspecialchars($_SESSION["name"], ENT_QUOTES, 'UTF-8') . "!";
}
?>
<form method="post" action="">
    <input type="text" name="name">
    <input type="submit" value="Submit">
</form>

○サンプルコード5:$_COOKIEを使ったクッキー管理

このコードでは$_COOKIEを使ってクッキーを管理する例を示しています。

この例では、’name’という名前のデータを$_COOKIEを通じて保存し、その後に取得して表示しています。

<?php
if(isset($_POST["name"])){
    setcookie("name", $_POST["name"], time()+3600);
    echo "Hello, " . htmlspecialchars($_COOKIE["name"], ENT_QUOTES, 'UTF-8') . "!";
}
?>
<form method="post" action="">
    <input type="text" name="name">
    <input type="submit" value="Submit">
</form>

○サンプルコード6:$_FILESを使ったファイルアップロード

このコードでは$_FILESを使ってファイルアップロードを行う例を示しています。

この例では、’file’という名前のファイルを$_FILESを通じて取得し、move_uploaded_file関数を利用して特定のディレクトリに保存しています。

<?php
if(isset($_FILES["file"])){
    $filename = $_FILES["file"]["name"];
    move_uploaded_file($_FILES["file"]["tmp_name"], "./uploads/".$filename);
    echo "ファイルがアップロードされました: " . $filename;
}
?>
<form method="post" action="" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload">
</form>

○サンプルコード7:$_ENVを使った環境変数の利用

このコードでは$_ENVを使って環境変数を利用する例を示しています。

この例では、PATHという名前の環境変数を$_ENVを通じて取得しています。

<?php
echo '環境変数PATHの内容: ' . $_ENV["PATH"];
?>

●注意点と対処法

スーパーグローバル変数を使用する際には、セキュリティ上の問題に十分に注意する必要があります。

たとえば、$_POSTや$_GETで送信されるデータは、ユーザーから直接提供されるため、その内容は信用できないと考えるべきです。

●カスタマイズ方法

さて、ここからはスーパーグローバル変数のカスタマイズ方法について学んでいきましょう。

まずは$_REQUESTを使ったデータ取得のカスタマイズから見ていきましょう。

○サンプルコード8:$_REQUESTを使ったデータ取得のカスタマイズ

このコードでは$_REQUESTを使ってデータ取得をカスタマイズする例を示しています。

この例では、’name’という名前のデータを$_REQUESTを通じて取得し、echoを利用して表示しています。

<?php
if(isset($_REQUEST["name"])){
    $name = $_REQUEST["name"];
    echo "Hello, " . htmlspecialchars($name, ENT_QUOTES, 'UTF-8') . "!";
}
?>
<form method="post" action="">
    <input type="text" name="name">
    <input type="submit" value="Submit">
</form>

○サンプルコード9:$_GLOBALSを使ったグローバル変数のカスタマイズ

このコードでは$_GLOBALSを使ってグローバル変数をカスタマイズする例を示しています。

この例では、’name’という名前のグローバル変数を$_GLOBALSを通じて設定し、関数内部からその変数を参照しています。

<?php
$GLOBALS['name'] = 'World';
function sayHello() {
    echo "Hello, " . $GLOBALS['name'] . "!";
}
sayHello();
?>

○サンプルコード10:スーパーグローバル変数と関数を組み合わせたカスタマイズ

このコードではスーパーグローバル変数と関数を組み合わせたカスタマイズの例を示しています。

この例では、$_POSTを使ってフォームから送信されたデータを取得し、それを関数内部で利用しています。

<?php
function showValue() {
    echo $_POST['value'];
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    showValue();
}
?>
<form method="post" action="">
    <input type="text" name="value">
    <input type="submit" value="Submit">
</form>

まとめ

今回はPHPのスーパーグローバル変数について学びました。

これらの変数はPHPスクリプトのどこからでもアクセス可能であり、$_POSTや$_GET、$_SESSIONなど、Webアプリケーション開発で頻繁に利用されるデータを操作するためにあります。

しかし、これらの変数を利用する際にはセキュリティ上の注意点もあるため、それらを理解した上で適切に利用することが重要です。

また、スーパーグローバル変数はカスタマイズ可能であり、それらを適切に利用することで、より柔軟なプログラミングが可能となります。