C/C++编写CGI程序之form处理
1. GET
2. POST
3. 结束
我们有一张web
test.html
1. GET
首先我们来获取GET方式的form
在环境变量QUERY_STRING里面,存储着GET提交的字符串
cgi-get.c
编译后,复制到cgi-bin目录下,名为test-get.cgi,确保apache用户拥有执行权限
然后登陆test.html,填写dorainm和linux测试get提交方式,获得
name=dorainm&pswd=linux
2. POST
POST是通过标准输入来获取form提交的字符串的
环境变量CONTENT_LENGTH里面,存储着POST提交的字符串的长度
看 test-post.c 的源码
同样,编译后复制到cgi-bin目录下,名为test-post.cgi
测试以POST方式提交guaicat和gnu,可以看到
name=guaicat&pswd=gnu
3. 结束
今天头非常痛,文字描述比较少,大家看代码
哪天有时间写个C++的CGI的类或者C语言CGI库吧
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>
<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, "<html><title>get</title>\n");
if( getenv("QUERY_STRING" ) )
{
fprintf( stdout, getenv("QUERY_STRING" ) );
}
else
{
fprintf( stdout, "(NULL)\n" );
}
fprintf( stdout, "</html>\n" );
return 0;
};
#include <stdlib.h>
int main( void )
{
fprintf( stdout, "Content-type:text/html\n\n");
fprintf( stdout, "<html><title>get</title>\n");
if( getenv("QUERY_STRING" ) )
{
fprintf( stdout, getenv("QUERY_STRING" ) );
}
else
{
fprintf( stdout, "(NULL)\n" );
}
fprintf( stdout, "</html>\n" );
return 0;
};
编译后,复制到cgi-bin目录下,名为test-get.cgi,确保apache用户拥有执行权限
然后登陆test.html,填写dorainm和linux测试get提交方式,获得
name=dorainm&pswd=linux
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, "<html><title>post</title>" );
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</html>\n" );
return 0;
}
#include <stdlib.h>
int main( void )
{
int i, n;
fprintf( stdout, "Content-type:text/html\n\n" );
fprintf( stdout, "<html><title>post</title>" );
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</html>\n" );
return 0;
}
同样,编译后复制到cgi-bin目录下,名为test-post.cgi
测试以POST方式提交guaicat和gnu,可以看到
name=guaicat&pswd=gnu
3. 结束
今天头非常痛,文字描述比较少,大家看代码
哪天有时间写个C++的CGI的类或者C语言CGI库吧
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/623/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2008-11-25 11:58
评论列表