如何检索表单“POST”通过用 C 编写的 cgi-bin 程序获取数据

发布于 2024-10-27 05:52:44 字数 225 浏览 3 评论 0原文

我正在尝试使用用 C 编写的程序从 html 表单中检索 POST 数据。

目前我正在使用:

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

这似乎适用于表单“GET”方法,但不适用于“POST”方法。如何检索 POST 数据?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冷月断魂刀 2024-11-03 05:52:44

POST 数据附加到请求标头,位于双换行符之后。在 CGI-BIN 环境中,您可以从 STDIN 读取它。

请注意,服务器不需要在 POST 数据末尾向您发送 EOF 字符(或某些终止指示符)。读取的内容切勿超过 CONTENT_LENGTH 字节。

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.

鸠书 2024-11-03 05:52:44

如果我没记错的话,请阅读 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);

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);
何其悲哀 2024-11-03 05:52:44

为什么要重新发明那个轮子?只需使用一个库: http://libcgi.sourceforge.net/

Why reinvent that wheel? Just use a library: http://libcgi.sourceforge.net/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文