雨谷の日和

過去20年で2,700を超えるアニメの第1話だけは見続けた僕のお勧めアニメがハズレなはずがない

人狼BBS作成日記30

ということで、次はクライアントからの入力を捌く方法を考えるわけです。
まずは、CGIの基礎のおさらいから。


HTTPは基本的に、サーバに置かれているデータをクライアントにダウンロードするだけの通信手順を規定したものでした。しかし、それだけだと何かと素っ気無いので、クライアントからサーバにパラメータを送ることもできるようになっています。かなり限定されたデータしか送れないようになってますが、まあ、そもそもHTTPの仕組みが単純だったこと(だから広まったわけですが)や、サーバサイドのセキュリティ的な問題もあったので、そこら辺は仕方が無いと考えるべきもののようです。
で、パラメータを送る方法には二つが用意されました。GETとPOSTです。(他にもPUTとかあるようですが、今回は割愛)
GETは、そもそもファイルを取ってくる時のコマンドだったんですが、このファイルを特定するためのURL(ようするにホームページのアドレスですね)に色々とパラメータを追加してやる方法が提供されたわけです。こんな感じですね。

http://www.hogehohe.jp/foo/index.cgi?data=20040918&name=Alice

この「index.cgi」までは通常のURL部分ですが、その後、「?」以降の部分はクライアントからのパラメータになっています。パラメータは「名前」と「値」の対になっていて、上記の場合だと「data」パラメータの値が「20040918」、「name」パラメータの値が「Alice」になりますね。それぞれのパラメータは「&」で区切ります。


もうひとつのPOSTは、HTMLでフォームを作って、そこに入力してもらったデータをサーバに送るというものです。こんな感じですね。

<form method=POST action=index.cgi>
<input type=text size=50 value=20040918>
<input type=submit value=send>
</form>

実際にこれを表示させるとこんな感じになります。






このとき、フォームのmethodとしてGETを指定することもできますが、まあ、普通はPOSTを使います。
GETには色々と制約もありますから……。
さて、次はこれらのパラメータを受け取るCGI側を見ることにします。