Cで書かれたプログラムを使用してhtmlフォームからPOSTデータを取得しようとしています.
現時点で私は使用しています:
char *formdata = getenv("QUERY_STRING");
if(formdata == NULL) /* no data retrieved */
これは、フォーム「GET」メソッドでは正常に機能しているようですが、「POST」メソッドでは機能していないようです。POST データを取得するにはどうすればよいですか?
Cで書かれたプログラムを使用してhtmlフォームからPOSTデータを取得しようとしています.
現時点で私は使用しています:
char *formdata = getenv("QUERY_STRING");
if(formdata == NULL) /* no data retrieved */
これは、フォーム「GET」メソッドでは正常に機能しているようですが、「POST」メソッドでは機能していないようです。POST データを取得するにはどうすればよいですか?
POST データは、二重改行の後にリクエスト ヘッダーに追加されます。CGI-BIN 環境では、STDIN から読み取ります。
サーバーは、POST データの最後にEOF 文字(または何らかの終了インジケータ)を送信する必要はないことに注意してください。CONTENT_LENGTH バイトを超えて読み取らないでください。
私の記憶が正しければ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);
なぜその車輪を再発明するのですか?ライブラリを使用するだけです: http://libcgi.sourceforge.net/