PHP マニュアル
前のページ | 第 2章簡易チュートリアル | 次のページ

# フォームの処理

PHP の最も強力な機能の一つは、HTML フォームを処理する手段です。 理解するべき重要な基本概念は、あるフォームの中の全てのフォーム要素が、 自動的に PHP スクリプトで利用可能になるということです。 詳細は、マニュアルのセクション PHPの外部からくる変数 および PHP でフォームを使用する例を参照してください。以下に HTML フォームの例を示します。

例 2-7. 簡単な HTML フォーム

    <form action="action.php" method="post">
     名前: <input type="text" name="name" />
     年齢: <input type="text" name="age" />
     <input type="submit" />
    </form>

このフォームに関して特別なところはありません。これは通常の HTML フォームで特殊なタグは全く使用していません。 ユーザがこのフォームを記入し、投稿ボタンを押した時、 `action.php` ページがコールされます。 このファイルには、以下のようなコードを記述します。

例 2-8. フォームからのデータを出力する

`こんにちは、<?php echo htmlspecialchars($_POST['name']); ?>さん。 あなたは、<?php echo (int)$_POST['age']; ?> 歳です。`

このスクリプトの出力例は次のようになります。

    こんにちは、Joe さん。
    あなたは、22 歳です。

htmlspecialchars() および `(int)` の部分以外は、何を行っているかは明らかでしょう。 htmlspecialchars() は、html での特殊な文字を適切にエンコードし、 HTML タグや Javascript をページ内に仕込めないようにします。 また、age フィールドには数値が入ることがわかっているので、これを integer 型に 変換 します。これにより、おかしな文字が入力されることを防ぎます。 これらの処理を PHP に自動的に行わせるためには、 filter 拡張モジュールを使用します。 変数 `$_POST['name']` と `$_POST['age']` は PHP により自動的に設定されます。 前の部分では、オートグローバル`$_SERVER` を使用しましたが、 ここでは、全ての POST データを保持するオートグローバル $_POST を導入しています。 フォームのメソッドが POST であることに注意してください。 GET メソッドを使用している場合、 フォームの情報は代わりにオートグローバル $_GET に代入されます。リクエストデータの発信源に留意しない場合には、 オートグローバル変数 $_REQUEST を使用することもできます。この変数は、GET, POST, COOKIE, FILE データの混ざったものが含まれます。 import_request_variables() 関数も参照してください。

XForms の入力を PHP で扱うことも可能ですが、たいていの場合は HTML フォームのほうが快適に使用できるでしょう。 XForms は初心者向けのものではありませんが、気になるかたもいるかもしれません。 機能概要の節にある XForm から受信したデータの処理方法 を参照ください。

前のページ | ホーム | 次のページ
実用的な例 | 上に戻る | 新しいバージョンの PHP で古いコードを使用する