- Home ›
- ホームページ作成入門 ›
- フォームの使い方 ›
- HERE
フォームから送られるデータの確認方法
フォームを使ってサーバへデータを送信した時、どのようなデータが実際に送られているのか確認する方法をご紹介しておきます。サーバ側のプログラムは必要ありませんが、メソッドとして「get」を使いますのであまり長いデータでは出来ません。
まず確認したいフォームが含まれるWebページを作成したら、送信先を自分自身(例えばindex.htmlという名前のWebページにフォームを記述している場合はindex.html)に設定しメソッドは「get」にします。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>フォームのサンプル</title>
</head>
<body>
<h1>フォームサンプル</h1>
<p>アンケートにご協力下さい</p>
<form action="index.html" method="get">
<p>
名前:<input type="text" name="text1" /><br />
住所:<input type="text" name="text2" /><br />
年齢:
<input type="radio" name="radio1" value="10" />10代
<input type="radio" name="radio1" value="20" checked="checked" />20代
<input type="radio" name="radio1" value="30" />30代<br />
<input type="submit" name="button1" value="送信" />
</p>
</form>
</body>
</html>
このページをWebブラウザで表示した後で、フォームに値を入力して下さい。
「送信」ボタンをクリックするとform要素のaction属性に指定したURIに対してデータが送信されます。今回は自分自身のURIを指定しており、またメソッドが「get」ですので自分自身のWebページが再度表示されブラウザのアドレス欄にはフォームデータ付きのURIが表示されます。
この時、ブラウザのアドレス欄に表示されているのは次の通りです(ローカルディレクトリの位置を表す部分は省略してあります)。
index.html?text1=yamada&text2=tokyo&radio1=30&button1=%E9%80%81%E4%BF%A1
「get」メソッドの場合、送信先のURIの後に「?」を付けてその後にフォームのデータが記述されます。よってフォームから送られたデータは次の部分です。
text1=yamada&text2=tokyo&radio1=30&button1=%E9%80%81%E4%BF%A1
フォームのデータは「名前=値」と言う形式で送られます。また複数ある場合には「&」で区切り続けて記述されます。よって今回送られたデータは次のようになります。
text1=yamada text2=tokyo radio1=30 button1=%E9%80%81%E4%BF%A1
このように「get」メソッドを使うことで、どのようなデータが実際にサーバに対して送信されているのかを確認することが出来ます。
URLエンコード
URIにデータを付けて送信する場合、データもURIの一部となりますのでURIの規則に従う必要があります。URIではアルファベットや一部の記号を除く文字は「%xx」と言う%+2桁の16進数に変換する必要があります。この変換形式をURLエンコードと言います。
※変換はバイト毎に行われますので日本語などの場合は1文字であっても「%xx%xx」や「%xx%xx%xx」のように表されることがあります。
先ほどの例で「button1=%E9%80%81%E4%BF%A1」となっている部分がありますが、この「%E9%80%81%E4%BF%A1」は「送信」と言う文字がURLエンコードされた値です。URLエンコードは自動的に行われますのであまり気にする必要はありませんが、このような処理が行われていることだけ憶えておいて下さい。
( Written by Tatsuo Ikura )