PHP 5 フォーム処理

❮ 前章へ 次章へ ❯

PHPのスーパーグローバル$_GETと$_POSTは、フォームデータの受取りに使用します。


PHP - 簡単なHTMLフォーム

下の例は、2つの入力フィールドと送信ボタン付きの単純なHTMLフォームを表示します:

<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>
例の実行 »

ユーザが上のフォームに入力して送信ボタンをクリックすると、フォームデータは "welcome.php" というPHPファイルに送信されます。 フォームデータは、HTTP POSTメソッドで送信します。

単にすべての変数を echo するだけで、送信データを表示することができます。"welcome.php"は、次の通りです:

<html>
<body>

Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>

</body>
</html>

出力は次の通りです:

Welcome John
Your email address is john.doe@example.com

HTTP GETメソッドを使用しても同じ結果が得られます:

<html>
<body>

<form action="welcome_get.php" method="get">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>
例の実行 »

"welcome_get.php"は次の通りです:

<html>
<body>

Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>

</body>
</html>

上のコードは非常に簡単です。しかし、最も重要なことは欠陥です。スクリプトを悪意のあるコードから守るためには、 フォームデータを検証する必要があります。

PHPのフォーム処理時には、セキュリティを考慮してください!

このページには、フォームの検証は含まれていません。フォームデータの送信と取得の方法だけを示すものです。

しかし、次のページでは、セキュリティを考慮したPHPのフォーム処理方法を示しています。 フォームデータの適切な検証は、フォームをハッカーやスパマーから守るために重要です!


GET 対 POST

GETとPOSTの両方ともに配列を作ります (array( key => value, key2 => value2, key3 => value3, ...))。 この配列にはキーと値のペアがあり、キーはフォームコントロールの名前で、値はユーザが入力したデータです。

GETとPOSTは、それぞれ$_GETと$_POSTとして取扱います。これらはスーパーグローバルで、スコープに関係なく常にアクセス可能であり、 特別な操作を行うことなく、関数、クラスまたはファイルからアクセスできます。

$_GET は、URLパラメータを介して現在のスクリプトに渡される変数の配列です。

$_POST は、HTTP POSTメソッドを介して現在のスクリプトに渡される変数の配列です。


いつGETを使う?

GETメソッドを使用してフォームから送信された情報は、すべての人に見えてしまいます(すべての変数名と値がURLに表示されます)。 GETには、送信する情報量にも制限があります。制限は、約2,000文字です。しかし、変数がURLに表示されるため、ページをブックマークすることは可能です。 これは場合によっては便利なことがあります。

GETは、機密性の低いデータを送信するのに使用することができます。

注: GET は、パスワードやその他の機密情報の送信には絶対に使用しないでください!


いつPOSTを使用する?

POSTメソッドを使用してフォームから送信された情報は、他の人には見えません(すべての名前/値はHTTP要求の本文に埋め込まれています)。 送信する情報の量に制限はありません。

さらに、POSTは、サーバにファイルをアップロードする際、マルチパートバイナリ入力のサポートなどの高度な機能をサポートしています。

しかし、変数はURLに表示されないため、ページをブックマークすることはできません。

開発者には、フォームデータの送信にはPOSTの方が好まれます。

次に、PHPフォームを安全に処理する方法を見てみましょう!


❮ 前章へ 次章へ ❯