[英]using C to generate simple html page with cgi
C程序:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *data = getenv("QUERY_STRING");
char userName[30];
sscanf(data,"uname=%s", userName);
printf ("Content-Type: text/html\n\n");
printf ("<html>");
printf ("<head> </head>");
printf ("<body>");
printf ("<h2 style=""text-align:center;color=red"";> %s </h2>", userName);
printf ("</body> </html>");
return 0;
}
HTML:
<!doctype html>
<html lang="en">
<head>
</head>
<body>
<form action="echo.cgi" method="get">
Please enter your name: <input type="text" name="uname"> <br>
<input type="submit" value="Submit">
</form>
</body>
</html>
我正在尝试使用C程序制作一个简单的html页面,该页面仅显示html中的GET变量uname。 我正在尝试通过以下方式将C编译为CGI:
gcc echo.c -o echo.cgi
很好。 但是,每按一下提交,CGI文件就会开始下载。 我究竟做错了什么
您必须通过配置了CGI的HTTP服务器来运行它。 仅仅将浏览器导航到磁盘上的本地HTML文件并不会执行代码。 服务器将执行您的代码并返回输出作为响应。
另外,我想指出CGI是一种安全风险。 我意识到这可能只是最少的示例代码,但是因为您没有在调用sscanf
之前检查字符串的边界,所以存在一个可以被他人利用来获取对服务器的访问权限的漏洞。 https://zh.m.wikipedia.org/wiki/Buffer_overflow
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.