送信データを受け取る
PHPで送信データを受け取る - テキスト
テキストボックス
- $_POST[ 'name' ]という変数に格納されている
《input.php》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>文字を入力する</title> </head> <body> <form action="request.php" method="post"> <label for="name">名前:</label> <input type="text" id="name" name="name"> <input type="submit" value="送信"> </form> </body> </html>
《request.php》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>文字を入力する部品</title> </head> <body> こんにちは、 <?php print htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'); ?> さん! </body> </html>
input(1行のテキスト)
<?php print $_POST[ 'name ']; ?>
password(パスワード)
- 「1234」は最も利用されているパスワードの文字列なので、実生活では使用不可
<?php print $_POST[ 'password' ]; ?>
textarea(複数行のテキスト)
- nl2br関数は、ブラウザに入力時の改行を変換して表示します(データベースに記録したり、メールで送信する場合は不要です)
<?php print nl2br($_POST[ 'message' ]); ?>
ユーザーからの入力を受け取る
「$_POST」から値を取り出すには、input要素のname属性を指定します。
$_POST[ 'name' ]
ユーザーからの入力値をそのまま表示してはいけない
<?php print ($_POST['name']); ?>
であっても、それなりに動作します。
しかし、以下のようにscript要素を入力することも可能です。
《実行結果》
このようにエラーを返すものと、実行してしまいダイアログボックスを表示してしまうブラウザもあります。
悪意のあるスクリプトを埋め込まれることも考えられます。
PHPで送信データを受け取る - テキスト以外
ラジオボタン
- $_POST[ 'gender' ]という変数に格納されている
- ブラウザには、valueの値が表示されます
《input.php》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ラジオボタン</title> </head> <body> <form action="check.php" method="post"> 性別<br> <input type="radio" name="gender" id="gender_male" value="1"><label for="gender_male">男性</label> <input type="radio" name="gender" id="gender_female" value="2"><label for="gender_female">女性</label> <input type="radio" name="gender" id="gender_none" value="9"><label for="gender_none">解答しない</label> <br> <input type="submit" value="送信"> </form> </body> </html>
《check.php》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ラジオボタン</title> </head> <body> <?php print htmlspecialchars($_POST[ 'gender' ], ENT_QUOTES, 'UTF-8'); ?> </body> </html>
まとめ
- 入力値の送信先は、<form>要素の action属性によって決まります
- フォームからの入力値には、「$_POST[ '名前' ]」でアクセスできます
- ユーザーからの入力値を表示するには、htmlspecialchars命令で「<」「>」のような文字を無害な文字列に置き換えなければなりません
- フォームの送信方法には GETとPOST という形式があります
- GETで送信されたデータには、変数 $_GET でアクセスできます