1. GET
2. POST
3. 结束
我们有一张web
test.html
<html>
<head>
<title>form test</title>
</head>
<body>
<form method="get" name="test-get" action="./cgi-bin/test-get.cgi">
<input name="name"><input name="pswd"><input type=submit value="get">
</form>
<br><br>
<form method="post" name="test-post" action="./cgi-bin/test-post.cgi">
<input name="name"><input name="pswd"><input type=submit value="post">
</form>
</body>
</html>
|
1. GET
首先我们来获取GET方式的form
在环境变量QUERY_STRING里面,存储着GET提交的字符串
cgi-get.c
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
fprintf( stdout, "Content-type:text/html\n\n");
fprintf( stdout, "get\n");
if( getenv("QUERY_STRING" ) )
{
fprintf( stdout, getenv("QUERY_STRING" ) );
}
else
{
fprintf( stdout, "(NULL)\n" );
}
fprintf( stdout, "\n" );
return 0;
};
|
编译后,复制到cgi-bin目录下,名为test-get.cgi,确保apache用户拥有执行权限
然后登陆test.html,填写dorainm和linux测试get提交方式,获得
2. POST
POST是通过标准输入来获取form提交的字符串的
环境变量CONTENT_LENGTH里面,存储着POST提交的字符串的长度
看 test-post.c 的源码
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int i, n;
fprintf( stdout, "Content-type:text/html\n\n" );
fprintf( stdout, "post" );
if( getenv("CONTENT_LENGTH") )
{
n = atoi( getenv("CONTENT_LENGTH") );
}
else
{
n = 0;
fprintf( stdout, "(NULL)" );
}
for( i=0; i<n; i++ )
{
fputc( getc(stdin), stdout );
}
fprintf( stdout, "\n\n" );
return 0;
}
|
同样,编译后复制到cgi-bin目录下,名为test-post.cgi
测试以POST方式提交guaicat和gnu,可以看到
3. 结束
今天头非常痛,文字描述比较少,大家看代码
哪天有时间写个C++的CGI的类或者C语言CGI库吧
阅读(3512) | 评论(0) | 转发(0) |