相关配置
配置ScriptAlias 虚拟路径 真实路径
ScriptAlias /cgi-bin/ /etc/boa/www/cgi-bin/
指明CGI脚本的虚拟路径对应的实际路径。一般所有的CGI脚本都要放在实际路径里,用户访问执行时输入站点+虚拟路径+CGI脚本名
测试代码
login.html
<html>
<head>
<title>CGI登陆</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form name="login" action="./cgi-bin/login.cgi">姓名:<input type="text" name="name" />
<br/>密码:<input type="password" name="pwd" />
<br/>确定:<input type="submit" value="登陆" />
</form>
</body>
</html>
login.c
#include<stdio.h>
#include<stdlib.h>
int main()
{
char *date;
char name[50],pwd[20];
printf("content-type:text/html;charset=utf-8\n\n");
printf("<TITLE>登陆结果</TITLE>");
printf("<H3>登陆结果</h3>");
date=getenv("QUERY_STRING");
if(date==NULL)
printf("<p>错误:数据没有被输入或数据传输发生错误</p>");
else
{
sscanf(date,"name=%[^&]&pwd=%s",name,pwd);
printf("<p>name=%s</p>",name);
printf("<p>pwd=%s</p>",pwd);
printf("%s",date);
}
return 0;
}
1.将login.html放在
2.编译login.c,并放到
gcc login.c -o login.cgi
测试结果
直接请求cgi
使用CGI的基本思路,cgi里有main函数,向网页输出的内容通过printf输出,这一点非常像java servlet。
在main函数里可以获取请求的参数
测试: test.c
/*
* @Descripttion: 测试url http://192.168.2.136/cgi-bin/test.cgi
* @version: 1.0.0
* @Author: zhangyasheng
* @Date: 2020-10-20 14:44:57
* @LastEditors: zhangyasheng
* @LastEditTime: 2020-10-20 14:58:32
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
printf("content-type:text/html;charset=utf-8\n\n");
printf("<TITLE>test.cgi</TITLE>");
printf("<H3>test.cgi</h3>");
return 0;
}
gcc test.c -o test.cgi
sudo cp test.cgi /etc/boa/www/cgi-bin
通过这个url可以直接请求到cgi