PHPフォーム処理
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ファイルに送信されます。フォームデータはHTTPPOSTメソッドで送信されます。
送信されたデータを表示するには、すべての変数をエコーするだけです。「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 [email protected]
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(key1 => value1、key2 => value2、key3 => value3、...))。この配列は、キーと値のペアを保持します。ここで、キーはフォームコントロールの名前であり、値はユーザーからの入力データです。
GETとPOSTはどちらも$ _GETと$ _POSTとして扱われます。これらはスーパーグローバルです。つまり、スコープに関係なく常にアクセス可能であり、特別なことをしなくても、任意の関数、クラス、またはファイルからアクセスできます。
$ _GETは、URLパラメーターを介して現在のスクリプトに渡される変数の配列です。
$ _POSTは、HTTPPOSTメソッドを介して現在のスクリプトに渡される変数の配列です。
いつGETを使用しますか?
GETメソッドを使用してフォームから送信された情報は、すべてのユーザーに表示されます(すべての変数名と値がURLに表示されます)。GETには、送信する情報の量にも制限があります。制限は約2000文字です。ただし、変数はURLに表示されるため、ページをブックマークすることができます。これは場合によっては便利です。
GETは、機密性の低いデータの送信に使用できます。
注: GETは、パスワードやその他の機密情報の送信には絶対に使用しないでください。
POSTを使用するのはいつですか?
POSTメソッドを使用してフォームから送信された情報は他のユーザーには表示されず (すべての名前/値はHTTPリクエストの本文に埋め込まれます)、送信する情報の量に制限はありません。
さらに、POSTは、ファイルをサーバーにアップロードする際のマルチパートバイナリ入力のサポートなどの高度な機能をサポートします。
ただし、変数はURLに表示されないため、ページをブックマークすることはできません。
開発者は、フォームデータの送信にPOSTを好みます。
次に、PHPフォームを安全な方法で処理する方法を見てみましょう。