time 
设为首页】【收藏本站
当前位置: 主页 > 程序设计 > C\C++\VC > C语言 > 用C/C++写CGI程序

用C/C++写CGI程序

时间:2009-09-20 23:31 点击:3651次 字体:[ ]




    使用CGIC库的简要:

    库的函数说明: http://www.boutell.com/cgic/#cgiFormStringNoNewlines

    1. 打印CGI标准输出头部:

    cgiHeaderContentType("text/plain");

    或者:

    fprintf( stdout, "Content-type:text/plain\n\n");红色部分不能写出“Contenttype”,否则浏览器显示网页会不正常。

    2. 处理Request Method:

 //deal with "GET"/"POST" method
    if (strncmp(cgiRequestMethod, "post",4) == 0)
    {
        handlePostRequest();
    }
    else //"GET"
    {
        handleGetRequest();
    }

    3. 获取QueryString中的各个字段值:
 cgiFormStringNoNewlines("query1", cmdstr, sizeof(cmdstr));
    if (strcmp(cmdStr, "ip_address") == 0)
    {
        ...
    }
    else
     ...

    4. CGI输出:fprintf(cgiOut, "%s\n", cgi_Output);

    以下是一些细节:

    一、 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



本文地址 : http://www.fengfly.com/plus/view-77288-1.html
标签: 实例编程
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:
本栏分类