PHPフォーム処理
PHPスーパーグローバル$_GETおよび $_POSTは、フォームデータの収集に使用されます。
PHP - シンプルなHTMLフォーム
以下の例は、2つの入力フィールドと送信ボタンを持つ単純なHTMLフォームを示しています。
例
ユーザーが上記のフォームに入力して送信ボタンをクリックすると、フォーム データが処理のために「welcome.php」という名前のPHPファイルに送信されます。フォームデータはHTTP POSTメソッドで送信されます。
送信されたデータを表示するには、すべての変数をエコーするだけです。 「welcome.php」は次のようになります。
出力は次のようになります。
HTTP GETメソッドを使用しても同じ結果が得られます。
例
「welcome_get.php」は次のようになります。
上記のコードは非常に単純です。しかし、最も重要なことが欠けています。悪意のあるコードからスクリプトを保護するには、フォームデータを検証する必要があります。
PHPフォームを処理するときはセキュリティを考えてください!
このページにはフォームの検証は含まれていません。フォームデータを送信および取得する方法を示しているだけです。
ただし、次のページでは、セキュリティを考慮してPHPフォームを処理する方法を示します。ハッカーやスパマーからフォームを保護するには、フォーム データを適切に検証することが重要です。
GET 対 POST
GETとPOSTの両方が配列を作成します(例: array( key1 => value1, key2 => value2, key3 => value3, ...))。この配列は、キーと値のペアを保持します。キーはフォーム コントロールの名前で、値はユーザーからの入力データです。
GETとPOSTはどちらも$_GETと$_POSTとして扱われます。これらはスーパーグローバルです。つまり、スコープに関係なく、常にアクセスできます。また、特別なことをしなくても、任意の関数、クラス、またはファイルからアクセスできます。
$_GETは、URLパラメータを介して現在のスクリプトに渡される変数の配列です。
$_POSTは、HTTP POST メソッドを介して現在のスクリプトに渡される変数の配列です。
GETを使用する場合
GETメソッドでフォームから送信される情報は、誰にでも見える(すべての変数名と値がURLに表示されます)。 GETには、送信する情報量にも制限があります。制限は約2000文字です。ただし、変数はURLに表示されるため、ページをブックマークすることは可能です。これは、場合によっては便利です。
GETは、非機密データの送信に使用できます。
注:パスワードやその他の機密情報の送信にGETを使用しないでください。
POSTを使用する場合
POSTメソッドでフォームから送信される情報は、他人には見えず(すべての名前/値はHTTP要求の本文に埋め込まれます) および送信する情報量について制限はありません。
さらに、POSTは、ファイルをサーバーにアップロードする際のマルチパート バイナリ入力のサポートなど、高度な機能をサポートします。
ただし、変数はURLに表示されないため、ページをブックマークすることはできません。
開発者は、フォームデータの送信にPOSTを好みます。
次に、PHPフォームを安全な方法で処理する方法を見てみましょう。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。