これは ANSI C です

CGI で送られてくる文字列は、文字列の変数と値は = で結ばれ、変数と値の組の境は & で結ばれ、1 行で送られてきます
しかも space (つまり空白)は、 + で置換され、通常の 7 bit ASCII でないものは、 % に続く、2 桁の 16 進数に変換されて送られてきます

FORM タグ内で、GET と指定した場合、環境変数 QUERY_STRING に送られてきます
FORM タグ内で、POST と指定した場合、標準入力として送られてきます

このプログラムは、1 つの、FORM から出力したデータを(つまり、1つの変数と1つの値)、標準入力から受け取って、そしてデコードして、ファイルに格納する
漢字コードの変換は、していません(file を表示するときにしています(freesoft の nkf を SSI によって利用しています)(^_^))

著作権は放棄します、プログラムの実行・改変においては、各自自分の責任でしてください。

利用対象者
  1. プログラミングの経験が少しある。
  2. C のソースをコンパイルできる。
  3. C を少し知っている。

download
de_code.lzh lzh file (23,398byte) (de_code.lzh.base64)

使い方


このままでは、使えないでしょう(^_^)
自分のシステムにあわせて、ソースコードを書き換えてください
最低限 28,44,47,107,118,126,158 行目は、自分のシステムにあわせて、書き換えてください
ソースをデコードして、
de_code kazu
kazu : 入力する文字の数(単位 byte)
で、o.k.

MS-DOS の バッチファイルなら、
de_code %CONTENT_LENGTH%
で、このファイルを、de_code.bat とすると

<FORM ACTION="de_code.bat" METHOD="POST">
<TEXTAREA NAME="comment" ROWS="20" COLS="40"> </TEXTAREA><BR>
<INPUT TYPE="submit" VALUE="入力終了">
<INPUT TYPE="reset" VALUE="やり直します">
</FORM>
でいいでしょう

注意すべきは、ディレクトリの指定ですね
タグの意味は、適当な本で調べて下さい

ちなみに、このプログラムは、変数の分離はしていないので
フォームの書き込み欄は、 1 つだけが条件です
複数の書き込み欄に、対応するには、 free14.htm を参照
それから、セキュリティーは、全然考えていないので、(^_^)
少し気になる人は、 free14.htm を参照

ソースコードの説明


4 - 13 行目は、include や、プロトタイプ宣言をしています
16 - 25 行目は、変数の宣言をしています
27 - 46 行目は、ロック化作業(同時に 1 つの File にアクセスして、その File を壊さないようにする事)
47 - 53 行目は、ロックファイルを作成
55 - 70 行目は、環境変数 CONTENT_LENGTH から、標準入力から、入力するデータのサイズ(byte)を取得します (しかし、getenv() が使えないので(内の Sever )、シェルスクリプトから取得し、第 1 引数として、このプログラムに、渡されている)
71 - 77 行目まで、標準入力から、データを入力します
76 - 77 行目は、念のため、最後の変数の次に、文字列終端コードを付加しています
79 - 104 行目は、文字を、別の変数にコピーしています(この時に、デコードしています)
79 行目の、str+8 は、CGI で送られてくる変数を、 comment= としているので、最初のその部分は、必要ないでしょ
82 - 95 行目が、デコード処理をしています
106 - 111 行目は、データを保存するファイルを、追加書き込みとして、オープンします
112 - 117 行目は、データをファイルに保存します
118 行目は、ロックファイルを削除します 120 - 130 行目は、結果(このプログラムが、正常終了したのか、エラーになったのか)を、標準出力に出力します( CGI は、標準出力が、ブラウザーに送られます)
132 - 163 行目は、エラーをが出た時、呼ばれる関数です
165 - 177 行目は、エラーでも正常終了でも標準出力で同じ部分を関数にしています
179 - 258 行目が、デコードを担当している関数です

mail to active@window.goukaku.com