ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと

HTMLで送信(submit)とする場合,Plのスクリプトはどう記述すると良いのでしょうか?格納フォルダの記述など,数冊の解説書を読みあさりましたが,理解できません。よろしくお願いいたします。

A 回答 (2件)

HTMLからSubmitを行って、Perlで取得したいということですか?



送信には、GETとPOSTがありそれぞれ処理が少し違います。
また、日本語を受け取る場合は変換を行わなければなりません。

./
├/html/
  +--- test.html(submitがある)
└/cgi-bin/
 +--- test.cgi

となっているとして、
html側では
<form action="../cgi-bin/test.cgi" method="get">
<input type="text" name="data1" value="test">
<input type="text" name="data2" value="aiueo">
<input type="submit" value="送信">
</form>
となっている場合、GET送信では、送信ボタンを押したとき
http://~/cgi-bin/test.cgi?data1=test&data2=aiueo …
というアドレスにアクセスされます。

具体的に言えば、1つのinputタグのデータが name=value という形で構成され、すべてのデータ分 & でくっついています。
そして、formタグの action 要素で指定したCGIの最後に ? が付いて、連結されます。

また、別にPOST送信というものがありますが、GETとは少し違う部分もあるので省きます。

参考URL:http://www.futomi.com/lecture/form/
    • good
    • 0
この回答へのお礼

早速のご教示,ありがとうございます。やってみます。次回もよろしくおねがいいたします。

お礼日時:2006/09/17 11:42

No.1です。



コードを書くときのアドバイスです。

formタグの method 要素で GET を指定した場合、CGIに送られてきた *.cgi? 以降の文字列は、環境変数 $ENV{'QUERY_STRING'} に格納されています。
(POSTの場合は調べてください)

$ENV{'QUERY_STRING'}は、
name1=value1&name2=value2& ...
となっているので、
まず & で分割します。
#split関数

その後、各分割したものに対して、= で分割し、
name の部分を格納している変数を $name
value の部分を格納している変数を $value
とします。

valueで送られてきたデータは、日本語を含む場合エンコードされて送られてきます。
これをデコードする方法は調べてください。

また、半角スペースが含まれている場合、半角の + に置き換えられます。
従って
$value =~ tr/+/ /;
という処理をして、半角スペースに戻します。

最後に、扱いやすいように連想配列に格納します。
$input_data{$name} = $value;

大体こんな感じ。
    • good
    • 0
この回答へのお礼

早速のご教示,ありがとうございます。やってみます。次回もよろしくおねがいいたします

お礼日時:2006/09/17 11:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!