I am trying to retrieve POST data from html form using program written in C.
At the moment I am using:
char *formdata = getenv(\"QUERY_STRING\");
if(
If I remember right, read stdin
for POST data.
Edit for untested snippet
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);
POST data is appended to the request header, after a double newline. In a CGI-BIN environment, you read it from STDIN.
Be warned that the server IS NOT REQUIRED to send you an EOF character (or some termination indicator) at the end of the POST data. Never read more than CONTENT_LENGTH bytes.
Why reinvent that wheel? Just use a library: http://libcgi.sourceforge.net/