[CGI学习]C/C++编写CGI程序之form处理

jackxiang 2007-8-20 21:20 | |
C/C++编写CGI程序之form处理




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, "<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;
}



同样,编译后复制到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
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]