【发布时间】:2026-02-17 12:50:01
【问题描述】:
所以,正如我几天前所说,我正在尝试在 Apache 服务器上使用 CGI-C 制作登录脚本。
我的表单正在使用 POST 方法向 Test.cgi 提交两个变量:用户名和密码(仅模式 2 到 40 个字符)。
到目前为止,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *lengthy;
int figures;
char somelimit[512];
lengthy = getenv("CONTENT_LENGTH");
figures = atoi(lengthy);
fgets(somelimit, figures, stdin);
printf("Content-type: text/html\n\n");
printf("%s\n", somelimit);
return 0;
}
问。如何从标准输入中提取用户名和密码值?在上述情况下,我得到的正常回报是“username=xyz&password=xyz12”我该如何处理?
Q.我想限制从 CONTENT_LENGTH 标头读取的内容,以防 CONTENT-LENGTH 标头格式错误。
此标头返回什么类型的数据?我知道它应该返回“十进制数”。有效值为 0 或更多。我想取 1 到 X,其中 X 是上限,考虑到我有两个变量,用户名/密码,每个都限制为 40 个 html 形式的字符。
我尝试了 int[] 和 char[],而不是指针。为什么我不能直接用类似的东西转换它:
int some[1024];
some = atoi(gentenv("CONTENT_LENGTH"));
为什么 atoi 被认为是不安全的?
问。如何仅将标准输入仅包含 US-ASCII 字符,以避免格式错误的消息体。
我是 C 新手,所以请放轻松 :) PS:请不要推荐任何框架/网络服务器等。
编辑:我刚刚意识到也许我问了太多问题。对于那个很抱歉。我将修复这篇文章,使其具有凝聚力和界限。请待命。
Edit2:这是最后一个问题,不再编辑。我将接受至少回答上述 3 个问题中的 2 个的答案。
【问题讨论】: