データーのやりとりには2種類があります。
URLに埋め込むGETメソッド・・・・少量のデータ送信に向いている
HTMLフォームを使って送信するPOSTメソッド・・・大量のデータ送信に向いている
GETメソッドでのリクエストと受け取り
まずは練習してみましょう。次のようなプログラムをget.phpファイル名でhtdocsフォルダ内、すなわちドキュメントルート(公開フォルダ)に保存します。
getメソッドでは、URLの末尾に「?」を付け、「パラメータ名=値」という形式でデータを付与します。
しかし、URLには文字制限があるので、大量のデータは送信できません。また、URLにはパラメータを含めるので、送ったデータを隠すこともできません。このようなことから、個人を特定しない簡単なデータのやりとりに向いています。
POSTメソッド
POSTはHTMLフォームを使って送信し、大量データの送信するのに適しているのでしたね。それではまずHTMLフォームを作って準備してみましょう。
送信側HTML (form.html)
<!DOCTYPE html> <html lang=”ja”> <head> <meta charset=”UTF-8″> <meta http-equiv=”X-UA-Compatible” content=”IE=edge”> <meta name=”viewport” content=”width=device-width, initial-scale=1.0″> <title>Document</title> </head> <body> <h1>アンケートフォーム</h1> <form action=”post.php” method=”post”> | form挟まれた内容を送信。actionには送信先のURLを、methodにはgetかpostを入力。 |
<p>名前:<input type=”text” name=“name“></p> <p>性別:<input type=”radio” name=”gender” value=”man”>男 <input type=”radio” name=”gender” value=”woman”>女 </p> <p>評価: <select name=”star“> <option value=”1″>💛</option> <option value=”2″>💛💛</option> <option value=”3″>💛💛💛</option> <option value=”4″>💛💛💛💛</option> <option value=”5″>💛💛💛💛💛</option> </select> </p> <p>意見</p> <p><textarea name=”other“></textarea></p> <input type=”submit” value=”送信”> </form> </body> </html> | typeがtextだと1行のテキストボックスに。name属性の値が送信後のキー名になり、内容が$_post変数に格納されます。 typeがradioだと複数の選択肢から1つだけを選ぶことになります。name属性を与えることで同じグループの選択肢となる。value属性が送信される値になります。 name属性がデータを送信後のキー名となる。変数の値には、選択されたoptionのvalue属性が格納される。 複数行入力できるテキストエリアを作る。name属性の値が送信後のキー名になる。 typeがsubmitだと送信ボタンになる。valueの値がボタンの上に書かれる文字になる。ボタンが押されるとformタグのaction属性に指定されたURLにデータを送信します。 |
受信側のプログラム (post.php) 及びHTML
<?php $name = $_POST[‘name’]; | 名前 |
$gender = $_POST[‘gender’]; if($gender == “man”){ $gender = “男性”; }else if ($gender == “woman”){ $gender == “女性”; } | 性別 |
$tmp_star = $_POST[‘star’]; $star = ”; for ($i = 0; $i < $tmp_star; $i++){ $star .=’💛’; } | 評価 $star = ‘ ‘;は画面へ出力するための文字列。 $star .=’💛’;で送信された評価の数だけ追加 |
$other = $_POST[‘other’]; ?> | ご意見 |
<!DOCTYPE html> ~ | ここからHTML |
<html> <head> <meta charset=”UTF-8″> <title>アンケート結果</title> </head> <body> <h1>アンケート結果</h1> <p>お名前:<?php echo $name; ?></p> <p>性別:<?php echo $gender; ?></p> <p>評価:<?php echo $star; ?></p> <p>ご意見:<?php echo nl2br($other); ?></p> </body> </html> | 変数に代入された内容を表示する |
プログラムを書き終えたら、form.htmlファイルがある場所へアクセスします。
post.phpファイルへ送られ、内容が表示されています。