/* * cgi-bin/add.c — 简单CGI加法计算器 * * 用于测试Web服务器的CGI功能 * GET: /cgi-bin/add?a=10&b=20 * POST: 提交表单到 /cgi-bin/add */ #include #include #include #include int main(void) { char *query = getenv("QUERY_STRING"); char *method = getenv("REQUEST_METHOD"); printf("Content-Type: text/html; charset=UTF-8\r\n\r\n"); printf("\n\n"); printf("\n"); printf("CGI Calculator\n"); printf("\n"); printf("\n"); printf("

🔧 CGI 动态计算器 (实验4)

\n"); /* 从 stdin 读取 POST 数据 */ char post_data[1024] = ""; if (method && strcmp(method, "POST") == 0) { char *len_str = getenv("CONTENT_LENGTH"); if (len_str) { int len = atoi(len_str); if (len > 0 && len < (int)sizeof(post_data) - 1) { fread(post_data, 1, len, stdin); post_data[len] = '\0'; } } query = post_data; } /* 解析参数 a 和 b */ int a = 0, b = 0; if (query) { char *pa = strstr(query, "a="); char *pb = strstr(query, "b="); if (pa) a = atoi(pa + 2); if (pb) b = atoi(pb + 2); } printf("
\n"); printf("

%d + %d = %d

\n", a, b, a + b); printf("

Method: %s | PID: %d

\n", method ? method : "UNKNOWN", getpid()); printf("
\n"); printf("

← 返回首页

\n"); printf("
Experiment4 CGI v1.0\n"); printf("\n"); return 0; }