フォームデータの送信(GETメソッドとPOSTメソッド)
#POSTメソッド:ブラウザはサーバーに接続して、URLエンコードした内容をプログラムに渡すように要求する
#GETメソッド:プログラムを呼び出すURLの後ろに、URLエンコードしたデータ(クエリ)を?でつないでサーバーに送信する。データはURLの一部として送られる。
#HTTPのメソッド
POST, GETはフォーム送信だけのものではなく、ブラウザがサーバーに対して要求を送る(HTTPリクエスト)ときの一般的なメソッドでもある。通常、リンクを辿ったりアドレス欄にURLを入力したりしてHTMLページを呼び出すとき、ブラウザはGETを使ってサーバーにファイルを要求している。
例えば、/index.htmlというファイルを開く場合は
(例)GET /index.html HTTP/1.0
というリクエストを送信する。フォームのgetメソッドを使っても同様のリクエストで、/index.htmlの代わりにプログラムのURLとデータが送られる。
(例)GET /cgi-bin/htm-form?address=Tokyo HTTP/1.0
POSTの場合は、このリクエスト行にはデータの内容は書き込まれず、これに続く本体(エンティティ)にデータが入って送信される。
(例)POST /cgi-bin/htm-form HTTP/1.0
...
address=Tokyo
#GETとPOSTの使い分け
・getはデータベースにキーワードを送って検索結果を「取り出す」などのために用いる。
・postはメッセージの書き込み、新規データの登録など、何かをプログラムに送って内容を書き換えるような場合に用いる。
・getの場合はクエリの内容がURLの一部としてブラウザのアドレス欄などにも表示されたり、サーバーのログファイルに記録されたりする。
以上はThe Web KANZAKI http://www.kanzaki.com/docs/html/htminfo32.html#get-postより引用させていただきました。
フォーム送信先(action)を以下のように設定する(hoge.php)
<?php //phpinfo(); ?> <h2>GET</h2> <?php print_r($_GET); ?> <h2>POST</h2> <?php print_r($_POST); ?>
POSTメソッドで以下のHTMLテキストを作成
<html> <head> <title>フォームデータの送信</title> </head> <body> <form method="POST" action="hoge.php"> <input type="hidden" name="name1" value="フォーム"> <input type="submit" value="送信"> </form> <p> これはPOSTメソッドでの送信です。 </p> </body> </html>
ブラウザに表示された送信ボタンをクリックすると以下のように表示される
GET Array ( ) POST Array ( [name1] => フォーム )
またURLは以下のようになる
http://localhost/hoge.php
同じHTMLテキストをGETメソッドによる送信に変えて送信ボタンをクリックすると以下のように表示される
GET Array ( [name1] => フォーム ) POST Array ( )
またURLは以下のようになる
http://localhost/hoge.php?name1=フォーム
フォームから送るデータが複数ある場合、URL上に&でつながって表示される
http://localhost/hoge.php?name1=フォーム&name2=フォーム2.....