いやー、昨日は、「BREWでアジャイル」とかやったら、不評だったみたいで(^^;)。。
あとで、イラク人質事件の今井さんネタをもってきても、挽回むなしく、おとといと同じくらいのアクセス数(345 ip)でした(おとといは、かなり低いほうなのです)。
ということで、今日は、ネットねたに戻します(「BREWでアジャイル」はいつどこでやるの?については、このブログの一番最後に書きますね)
テストとか、実験とかで、FORMタグで渡す引数について、
全部、出してみたいこととかありませんか?
え、ない。
終了。。。
となってしまうので、あると思ってください。
とくに、
<FORM METHOD=POST ACTION="cgiout.cgi?atai=val1">
のように、メソッドをPOSTを指定してるのに、CGIのURLに、値の引数を付けちゃってる場合とか、だいじょうぶかとか。。。
っていうので、そーいうプログラムをつくってみました。
■■ FORMタグで渡す引数ぜんぶかきだしプログラムの仕様
・POSTの内容も、GETの内容も、とにかく、引数でわたってきたものは、名前と値を全部出す。
・メソッド名も出す
・カウンタをもっていて、ファイルに書き出す。
カウンタ名は、CGIのあるところに、 ファイル名 count.datで
結果は、1アクセス1ファイル。 ファイル名 kekka_カウンタ番号.txt
・で、相手には、XMLで、
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>0</error>
</response>
(実際には<>は、半角です)
と返す。。
。。。はあ?と思うと思いますが、これについては、実験がうまくいったら書きます。
■■ プログラム
こんなかんじ
#!/usr/local/bin/perl use CGI; ################################# # 必要な変数の取得 # ################################# ##引数を取得 #POST型 read (STDIN, $qs, $ENV{'CONTENT_LENGTH'}); @qs = split(/&/,$qs); foreach $i (0 .. $#qs) { ($name, $value) = split(/=/,$qs[$i],2); $value =~ tr/+/ /; #“+”を空白 $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # %XX変換 $kekka{$name} = $value; } #GET型 $qs = $ENV{'QUERY_STRING'}; @qs = split(/&/,$qs); foreach $i (0 .. $#qs) { ($name, $value) = split(/=/,$qs[$i],2); $value =~ tr/+/ /; #“+”を空白 $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # %XX変換 $kekka{$name} = $value; } ################################# # カウンタ取得 # ################################# #カウンタの取得 $cntfname = "count.dat"; open(LOCK, ">" . $cntfname . ". lock"); flock(LOCK,2); if ( -e $cntfname ) { open (IN, $cntfname); $count=<IN>; close(IN); } else { $count = 0; } $count=$count+1; open (OUT, ">" . $cntfname); printf(OUT "%d",$count); close(OUT); flock(LOCK,8); close(LOCK); unlink($cntfname . ". lock"); chmod 0600,$cntfname; ################################# # ファイルに書き出し # ################################# #ファイルを作成する $outfname = "kekka_" . $count . ".txt"; # 書き込み用にファイルを開く open(OUTF, ">". $outfname ); print OUTF "METHOD = $ENV{'REQUEST_METHOD'} ¥n"; while (($key, $val) = each(%kekka)) { print OUTF "$key : $val ¥n"; } # ファイルを閉じる close( OUTF); ################################# # 返信 # ################################# #表示 print "Content-Type: text/xml¥n¥n"; print '<?xml version="1.0" encoding="iso-8859-1"?>'; print '<response>'; print '<error>0</error>'; print '</response>'; |
(上記の< > ¥は、実際には、半角です)
さ、実験だ(^^)v
うまくいったら、なにやってるか、報告します。
●「BREWでアジャイル」の今後
ウィリアムのいたずらのBREWのページに、目次をかきました。
今後、ホームページに直接、あるいは、ねたがないときに、この中から選んで、ブログに書いてリンクしたりして、進めていこうかなあ。。なんて考えています。
とりあえず、連載は、見てくれる人がいなくなっちゃいそうなんでないけど、ひまができたら、書いていきます。でも、今、ひまがない(>_<!)