SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

プログラミング未経験から始めるPHP入門

入力フォームを使ってデータを送受信しよう!
プログラミング未経験から始めるPHP入門(5)

第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (1.2 KB)

GETとPOSTの違い

 「inquiry.html」では、次のように<form>タグを記述していました。

「inquiry.html」における<form>タグの記述
<form name="inquiry_form" action="complete.php" method="POST">

 上記ソースコードの、method="POST"の部分に関して説明をします。ここにはGETまたはPOSTを指定できます。GETPOSTは、主に次のような違いがあります。

  • GETURLの後ろに送信データを付加するもの
  • POSTURLとは別に、独立した情報として送信データを付加するもの

 では、実際に違いを確認してみましょう。「inquiry.html」を開き、POSTの部分をGETに書き換え、それぞれの場合で送信ボタンを押して表示された結果画面のURLを比較してみてください。

POSTを指定した場合
  <form name="inquiry_form" action="complete.php" method="POST">
GETを指定した場合
  <form name="inquiry_form" action="complete.php" method="GET">

 氏名欄に「Masato Oie」と入力した場合、GETでは、次の図のようにURLの「complete.php」の後に?マークで始まる文字列が付加されています。

GETを指定した場合の結果画面URL
GETを指定した場合の結果画面URL

 simei=Masato+Oieの部分に気付いたかと思います。このように、テキストボックスなどの入力値を、URLに付加して送信するのがGETです。

 その後、check1=%8C%9F%8D..と文字化けのように続いていますが、これは日本語をそのまま送受信することができないため、「URLエンコード」と呼ばれる文字の変換を行っています。エンコードされた文字列を元の日本語に復元することを「URLデコード」と言います。このURLエンコードはamazonなどでも使用されています。例えば、下記URLをInternet Explorerのアドレスバーにコピー&ペーストし、ページの内容を確認してみましょう。

http://www.amazon.co.jp/%E3%83%A2%E3%83%80%E3%83%B3Perl%E5%85%A5%E9%96%80-CodeZine-BOOKS-%E7%89%A7-%E5%A4%A7%E8%BC%94/dp/4798119172/

 その後、こちらのサイト(TAG index:URLデコード・エンコードフォーム)でデコードしてみましょう。URLに本のタイトルが含まれていることが分かるはずです。

URLをデコードすると日本語が表示される
URLをデコードすると日本語が表示される

 次にPOSTの場合です。POSTを使用したデータ送信では、次のようにURLの後ろには何も付きません。

すっきりとしたPOSTのURL
すっきりとしたPOSTのURL

 これはURL以外の、通常は人間の目で認識できない方法でデータを送信しているためです。

 ただし、専用のソフトを使えば第三者が送受信データを見ること(盗聴)も比較的容易に可能です。そのため、POSTを使うことで根本的なセキュリティ対策にはならないことに注意してください。とはいえ、パスワードを送信する画面では、せめてGETを入力フォームに使用することは、避けた方がよいでしょう。

 パスワードを送信したりする画面で根本的なセキュリティ対策をするための選択肢1つとして、SSLと呼ばれる通信方法を導入し送受信データを暗号化する事が挙げられます。また、PHPプログラムそのものの書き方もセキュリティに配慮する必要があります。PHPプログラムのセキュリティに関しては、後日、応用編で説明をします。

まとめ

 今回は、入力フォームに関して説明をしました。次回は情報を効率よく管理するため仕組みである「データベース」に関して説明をします。

今回のまとめ
  • 入力フォーム<form>タグで囲まれた場所に記述する必要がある。
  • PHP側では、$_REQUESTという連想配列で、入力された値を受信することができる。
  • GETURLの後ろに送信データを付加する送受信方法。
  • POSTURLとは別に、独立した情報としてデータを付加する送受信方法。ただし盗聴に対する根本的なセキュリティ対策にはならない

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
プログラミング未経験から始めるPHP入門連載記事一覧

もっと読む

この記事の著者

大家 正登(オオイエ マサト)

デジタルハリウッド『PHP 講座』講師。学生時代、スペイン語を専攻していたものの何故かプログラム言語に心が傾き、近所のフリープログラマーに弟子入り修行。その後中堅 SIer に 3 年間所属し、現在はフリーエンジニア。仕事の傍らジャズを演奏し、コントラバス 2 台と同居中。(ITエンジニア・大家正登のWeb...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3641 2009/03/16 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング