Как получить данные формы "POST" через программу cgi-bin, написанную на C - PullRequest
8 голосов
/ 27 марта 2011

Я пытаюсь получить данные POST из html-формы, используя программу, написанную на C.

В настоящее время я использую:

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

Кажется, это работает нормально с формойПОЛУЧИТЬ "метод, но не с методом" POST ".Как получить данные POST?

Ответы [ 3 ]

11 голосов
/ 27 марта 2011

Если я правильно помню, прочитайте 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);
10 голосов
/ 27 марта 2011

Данные POST добавляются к заголовку запроса после двойной новой строки.В среде CGI-BIN вы читаете его из STDIN.

Имейте в виду, что сервер НЕ ТРЕБУЕТСЯ отправлять вам символ EOF (или некоторый индикатор завершения) в концеДанные POST.Никогда не читайте больше байтов CONTENT_LENGTH.

4 голосов
/ 27 марта 2011

Зачем изобретать это колесо?Просто используйте библиотеку: http://libcgi.sourceforge.net/

...