ユーザーからの入力を受け取る
フォームの作成
《request1.php》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>POSTのデータを取得</title> </head> <body> <form method="POST" action="request2.php"> <div id="container"> <label for="name">名前:</label> <input type="text" id="name" name="name"> </div> <input type="submit" value="送信"> </form> </body> </html>
《request2.php》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>POSTのデータを取得</title> </head> <body> こんにちは、 <?php print htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'); ?> さん! </body> </html>
《実行結果》
ユーザーからの入力を受け取る
「$_POST」から値を取り出すには、input要素のname属性を指定します。
$_POST['name']
ユーザーからの入力値をそのまま表示してはいけない
<?php print ($_POST['name']); ?>
であっても、それなりに動作します。
しかし、以下のようにscript要素を入力することも可能です。
《実行結果》
このようにエラーを返すものと、実行してしまいダイアログボックスを表示してしまうブラウザもあります。
悪意のあるスクリプトを埋め込まれることも考えられます。
ポストデータ(POST)とクエリ文字列(GET)
- P.62参照
- ポストデータ:封筒の中に収められた手紙の本文
- クエリ情報:宛名の脇に添えられたメモ書き
まとめ
- 入力値の送信先は、<form>要素の action属性によって決まります
- フォームからの入力値には、「$_POST[ '名前' ]」でアクセスできます
- ユーザーからの入力値を表示するには、htmlspecialchars命令で「<」「>」のような文字を無害な文字列に置き換えなければなりません
- フォームの送信方法には GETとPOST という形式があります
- GETで送信されたデータには、変数 $_GET でアクセスできます