Re: あと



[ このメッセージへの返事 ] [ 返事を書く ] [ home.html ]



投稿者: 68user @ 202.230.39.9 on 97/6/21 01:46:49

In Reply to: Re: やっぱだめだ

posted by 68user @ 202.230.39.9 on 97/6/21 01:01:09

標準入力からは

content=書き込み内容

という形でデータがやって来ます(name=contentとしたから)。
CGIを呼び出すHTMLを

<input type="text" name=name size=20>
<input type="text" name="mail_addres" size=20>
<textarea name=content cols=40 rows=5>
</textarea>

と書けば、

name=68user&mail_address=j5306050@educ.cs.gunma-u.ac.jp&content=書き込み内容

となるので、($name,$m_addr,$content) = split('&',$str);
などとして項目ごとに分割します。

スペースは`+'に、日本語や!"#$%&'などの記号は%[0-9a-fA-F]という形に
エンコードされてるかもしれないので(GET形式ならエンコードされてる
ってことは知ってるんだけど、POST形式はよくわからん)、

$str =~ tr/+/ /;
$str =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;

という形でデコードします。ちなみに、標準入力から読み込んで
標準出力に出力、ということができるなら言語はperlに限りません。
CでもC++でもcshスクリプトでもshスクリプトでもいいです。
perlは遅いので、(もし速度に不満があれば)perlで雛型を作って
Cにコンバートするというのがいいかも。

これらの知識はこの1週間で得たことなので、しつこいようですが
あんまり信用しないでね。

やっぱり頭のなかだけで考えたら、書き忘れていることが
たくさんあるなぁ。多重自己レス失礼しました。