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(formdata == NULL) /* no data retrieved */
This seems to be working fine with form "GET" method but not with "POST" method. How do I retrieve POST data?
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.
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);
Why reinvent that wheel? Just use a library: http://libcgi.sourceforge.net/