配置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; }gcc login.c -o login.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