Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1154269
  • 博文数量: 221
  • 博客积分: 10152
  • 博客等级: 上将
  • 技术积分: 1518
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-22 10:42
文章分类

全部博文(221)

文章存档

2018年(1)

2015年(6)

2014年(3)

2013年(4)

2012年(1)

2011年(5)

2010年(14)

2009年(10)

2008年(28)

2007年(33)

2006年(114)

2005年(2)

我的朋友

分类: C/C++

2007-08-02 12:23:52

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提交方式,获得

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, "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,可以看到

name=guaicat&pswd=gnu



3. 结束

今天头非常痛,文字描述比较少,大家看代码
哪天有时间写个C++的CGI的类或者C语言CGI库吧
阅读(3512) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~