「POST」データと「GET」データ

入力フォームのデータの送信方法には、「POST」方式と「GET」方式の2種類があります。
まず、「POST」で送信する場合は、Webブラウザの入力データはHTTPヘッダの後ろに記載されて Apache へと送られます。POSTデータは「ieHTTPHeader」で確認することができますので、ヘッダ情報内のPOSTデータを確認してみましょう。HTTPリクエス卜は、ヘッダとボディ部分に分かれており、厳密にはPOSTデータはリクエストのボディ部分に記載されます。

下記のクエリ文字列は、送信されたPOSTデータの例です。

name=kaihara&sex=1&age=20&question=This+is+question%21&question_submit=%BC%C1%CC%E4%A4%F2%C1%F7%BF%AE%A4%B9%A4%EB

文字化けした文章のように見えますが、これはユーザーが入力した日本語や記号が変換されたものです。POSTデータでは、各入力項目が「&」で連結されています。良く見ると、それぞれの項目は「項目の名前=ユーザーの入力値」という形式になっています。今回の例では、フォームの1番目の項目は「お名前」で、その name 属性は「name」、そして入力欄に「kaihara」と入力しました。ヘッダに記載されたPOSTデータの先頭を見てみると、「name=kaihara」となっています。2番目の項目は性別で、その name 属性は「sex」、選択したのが「男性 (va lue が1)」でした。POSTデータを見ると、名前の後ろに「sex=1」が結合されています。このように、POSTデータはフォームの入力された情報を順番に「&」で区切 って一続きの文字列に結合しているのです。

また、最後に「question_submit=%BC%C1%CC%E4%A4%F2%C1%F7%BF%AE%A4%B9%A4%EB」という文字列があります。これは、送信ボタンの name 属性と value 属性の値です。送信ボタンの value 属性値は、ボタン上に表記される文字でもありますが、クリック時にPOSTデータの一部として送信されます。
value 属性の値は「質問を送信」となっていますが、POSTデータには日本語を記載できないため、URLエンコード形式に変換されてから送信されます。POSTで送信したデータは、PHPスクリプ卜内で「$_ POST」という変数に配列形式で格納されます。これが「POST」データの中身の仕組みです。

この入力フォームの method 属性を 「GET」 に変更してみると、POSTデータと同様、PHPがGETデータとして受け取ったとき、「$_GET」という変数に格納されます。このように、GET 方式でデータを受け取った場合も、POST 方式でデータを受け取った場合も、PHP側では変数の名前が異なる以外に違いはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です