0Pricing
PHP Academy · レッスン

スーパーグローバルでフォームデータを読み取る

_GET配列と_POST配列を使ってフォームのフィールドにアクセスします

「スーパーグローバルでフォームデータを読み取る」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。

PHPのスーパーグローバル

スーパーグローバルは、すべてのスコープで利用できるPHP組み込みの配列です。関数内でアクセスするためにglobalは必要ありません。

フォーム関連のスーパーグローバル: $_GET、$_POST、$_FILES、$_REQUEST

$_POSTのフィールドへのアクセス

デフォルト値へのフォールバックを指定し、配列のキーアクセスでPOSTフォームの値を読み取ります:

<?php
// Safe access with null coalescing
$username = $_POST['username'] ?? '';
$email    = $_POST['email']    ?? '';
$age      = (int) ($_POST['age'] ?? 0);

var_dump($username, $email, $age);

$_GETパラメーターへのアクセス

$_GETからURLクエリ文字列のパラメーターを読み取ります:

<?php
// URL: /products.php?category=electronics&page=2&sort=price

$category = $_GET['category'] ?? 'all';
$page     = max(1, (int) ($_GET['page'] ?? 1));
$sort     = in_array($_GET['sort'] ?? '', ['price', 'name', 'date'])
            ? $_GET['sort']
            : 'name';

echo "Category: $category, Page: $page, Sort: $sort";

チェックボックスの処理

チェックされていないチェックボックスは送信されません。必ずissetまたは??で確認します:

<?php
// HTML: <input type="checkbox" name="newsletter">

$wantsNewsletter = isset($_POST['newsletter']);
// or:
$wantsNewsletter = ($_POST['newsletter'] ?? null) !== null;

echo $wantsNewsletter ? 'Subscribed' : 'Not subscribed';

複数選択とチェックボックスの配列

配列形式のname属性を使用して、複数の値を収集します:

<!-- HTML -->
<!-- <input type="checkbox" name="tags[]" value="php"> -->
<!-- <input type="checkbox" name="tags[]" value="mysql"> -->

<?php
$tags = $_POST['tags'] ?? [];

if (!is_array($tags)) $tags = [];

foreach ($tags as $tag) {
    echo htmlspecialchars($tag) . PHP_EOL;
}

$_SERVERの情報

$_SERVERは、サーバーとリクエストの環境データを提供します:

<?php
echo $_SERVER['REQUEST_METHOD'];   // GET or POST
echo $_SERVER['REQUEST_URI'];       // /page.php?foo=bar
echo $_SERVER['HTTP_HOST'];         // example.com
echo $_SERVER['REMOTE_ADDR'];       // client IP
echo $_SERVER['HTTP_USER_AGENT'];   // browser string

filter_input()

filter_input()は、スーパーグローバルの値を1ステップで読み取り、サニタイズします:

<?php
// Retrieve and validate an integer from POST
$age = filter_input(INPUT_POST, 'age', FILTER_VALIDATE_INT);
if ($age === false) {
    echo 'Invalid age';
}

// Retrieve and sanitize a string from GET
$name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_SPECIAL_CHARS);
echo $name;

検証のためのfilter_var()

すでに変数に格納されている値を検証およびサニタイズします:

<?php
$email = 'user@example.com';
$ip    = '192.168.1.1';
$url   = 'https://example.com';

var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));  // string
var_dump(filter_var($ip,    FILTER_VALIDATE_IP));     // string
var_dump(filter_var($url,   FILTER_VALIDATE_URL));    // string

FILTER_SANITIZEとFILTER_VALIDATE

filter_varには2つのモードがあります:

  • FILTER_VALIDATE_* — 有効な場合は値を返し、無効な場合はfalseを返す
  • FILTER_SANITIZE_* — 危険な文字を削除またはエンコードし、サニタイズ済みの値を返す

$_FILESの処理

$_FILESには、アップロードされたファイルのメタデータが含まれます。各ファイルには5つのキーがあります:

<?php
if (isset($_FILES['avatar'])) {
    $file = $_FILES['avatar'];
    
    echo $file['name'];     // original filename: photo.jpg
    echo $file['type'];     // MIME type: image/jpeg
    echo $file['size'];     // bytes: 45231
    echo $file['tmp_name']; // temp path on server
    echo $file['error'];    // 0 = no error
}

フォーム全体を処理するパターン

検証を含むフォーム送信を処理するための、分かりやすいパターンです:

<?php
$errors = [];
$name   = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = trim($_POST['name'] ?? '');
    if (empty($name)) {
        $errors[] = 'Name is required';
    }
    if (empty($errors)) {
        // process...
        header('Location: /thanks.php');
        exit;
    }
}

確認問題

チェックされていないチェックボックスは、PHPサーバーに何を送信しますか:

まとめ: スーパーグローバル

フォームで重要なスーパーグローバル:

  • $_GET — URLパラメーター
  • $_POST — リクエストボディ
  • $_FILES — アップロードされたファイルの情報
  • $_SERVER — サーバーとリクエストの環境
  • 安全にデフォルト値へアクセスするには??を使用する
  • 取得と検証を組み合わせるにはfilter_input()を使用する

よくある質問

「スーパーグローバルでフォームデータを読み取る」レッスンは無料ですか?

はい。「スーパーグローバルでフォームデータを読み取る」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。

「スーパーグローバルでフォームデータを読み取る」で何を学びますか?

_GET配列と_POST配列を使ってフォームのフィールドにアクセスします ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「スーパーグローバルでフォームデータを読み取る」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. GETとPOST:使い分け
  2. スーパーグローバルでフォームデータを読み取る
  3. 入力値のバリデーション手法
  4. ユーザー入力のサニタイズ
← PHP Academyに戻る