PHP SCHOOL.biz

PHPの学習をする為のブログです。プログラム未経験の方にも理解できるよう基本的な、PHPの知識について身に付けることができるようにわかりやすい内容にしていきたいと思っています。


PHPでのフォーム処理

PHPでは、スーパーグローバル変数の$_GET と $_POSTを使用してフォームデータを収集ます。

単純な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ファイルに送信されます。フォームデータはPOSTメソッドで送信されます。
送信されたデータを表示するのに、単にすべての変数をechoしています。 "welcome.php"は次のようになります。

<html>
<body>

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

</body>
</html>

アウトプットは、次のような結果なります。



Welcome 田中
Your email address is tanaka@example.com

GETメソッドを使用しても同じような結果を得ることが出来ます。

<html>
<body>

<form action="welcome_get2.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_get2.php"ファイルは次のようになります。

<html>
<body>

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

</body>
</html>

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

PHPフォームを処理する際のセキュリティを意識しよう!
このページにはフォームの検証は含まれていません。フォームデータの送信と取得の方法を示しています。
次のページでは、セキュリティを考慮してPHPフォームを処理する方法を示します。フォームデータの適切な検証は、フォームをハッカーやスパマーから守るために重要です!

GET vs POST

GETとPOSTの両方のメソッドで配列を作成します(array(key => value、key2 => value2、key3 => value3、...))。この配列にはキーと値のペアがあり、キーはフォームのinputなどの名前で、値はユーザーからの入力データです。
GETとPOSTメソッドで送信した値は、は$ _GETと$ _POSTというスーパーグローバル変数に値が入ります。スコープに関係なく常にアクセス可能であり、特別な操作を行うことなく、関数、クラスまたはファイルからアクセスできます。

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

どんな時にGETメソッドを使うの?

フォームからGETメソッドを使用して送信された情報は、すべてのユーザーにもわかります(すべての変数名と値はURLに表示されます)。 GETには、送信する情報の量にも制限があります。ブラウザにより違いはありますが、IEの場合、制限は2083文字です。ただし、変数はURLに表示されるため、ページをブックマークすることは可能です。これは、URLごとに検索エンジンい登録させたい時やブックマークをできるようにしたい時に有益です。

GETメソッドは、機密性の低いデータを送信するために使用できます。
注意:パスワードやその他の機密情報の送信には絶対に使用しないでください!

どんな時にPOSTメソッドを使うの?

POSTメソッドを使用してフォームから送信された情報は、他の人には見えません(すべての名前と値はHTTPリクエストの本文に埋め込まれています)。送信する情報の量に制限はありません。
さらに、POSTメソッドは、サーバーにファイルをアップロードする際に、マルチパートバイナリ入力のサポートなどの高度な機能をサポートしています。

ただし、変数はURLに表示されないため、ページ毎にブックマークすることはできません。
次に、PHPフォームを安全に処理する方法を見てみましょう!