10

Cで書かれたプログラムを使用してhtmlフォームからPOSTデータを取得しようとしています.

現時点で私は使用しています:

char *formdata = getenv("QUERY_STRING");
if(formdata == NULL) /* no data retrieved */

これは、フォーム「GET」メソッドでは正常に機能しているようですが、「POST」メソッドでは機能していないようです。POST データを取得するにはどうすればよいですか?

4

3 に答える 3

14

POST データは、二重改行の後にリクエスト ヘッダーに追加されます。CGI-BIN 環境では、STDIN から読み取ります。

サーバーは、POST データの最後にEOF 文字(または何らかの終了インジケータ)を送信する必要はないことに注意してください。CONTENT_LENGTH バイトを超えて読み取らないでください。

于 2011-03-27T19:54:31.480 に答える
14

私の記憶が正しければstdin、POST データを読んでください。


テストされていないスニペットの編集

len_ = getenv("CONTENT_LENGTH");
len = strtol(len_, NULL, 10);
postdata = malloc(len + 1);
if (!postdata) { /* handle error or */ exit(EXIT_FAILURE); }
fgets(postdata, len + 1, stdin);
/* work with postdata */
free(postdata);
于 2011-03-27T19:52:58.640 に答える
3

なぜその車輪を再発明するのですか?ライブラリを使用するだけです: http://libcgi.sourceforge.net/

于 2011-03-27T19:57:33.293 に答える