开源C++版本CGI库CGICC入门

img_e25d4fb2f8de1caf41a735ec53088516.png开源C++版本CGI库CGICC入门.pdf

1.      简介

CGICC是一个C++语言实现的开源CGI库,采用LGPL授权协议,使用较为简单。

CGICC官网:http://www.gnu.org/software/cgicc/,截止2015/3/14CGICC最新稳定版本为3.2.16,下载地址是:http://ftp.gnu.org/gnu/cgicc/cgicc-3.2.16.tar.gz,最新更新时间为2014/12/7(令人惊讶和欣慰的是作为古老的CGICGICC还在不断的更新)。

2.      CGICC组成

CGICC由两大部分组成:

1)       CGI输入处理子模块

2)       HTML输出子模块

 

本文暂只介绍CGI输入处理子模块,对于HTML输出,推荐Google开源的ctemplatehttps://github.com/OlafvdSpek/ctemplate)。

3.      CGI输入处理子模块类结构


3.1.     Cgicc

CGICC的一类,通常直接在CGI的入口函数,如main函数中定义一个CGICC对象,然后即可使用CGICC提供的各种能力。

3.2.     CgiEnvironment

提供get系列方法取各环境变量的值。

3.3.     HTTPCookie

提花get系列方法取各Cookie的值,并支持set新增或修改Cookie值。

3.4.     CgiInput

CgiEnvironment内部类,仅供CgiEnvironment使用。

3.5.     FormFile

提供访问HTMLForm中的被上传文件信息和数据接口。

3.6.     FormEntry

提供访问HTMLForm中的非被上传文件类的信息和数据接口。

取URL参数值示例:

// http://127.0.0.1/?param_name=param_value

cgicc::form_iterator iter = cgi.getElement("param_name");

if (iter != cgi.getElements().end())

{

    std::string param_value = iter->getValue();

}

 

// 也可以这样做:

std::string param_value = cgi("param_name");

 

// 除此之外,FormEntry还提供了直接取指定数据类型的参数值,如:getIntegerValue、getDoubleValue

4.      CGI输入处理子模块初始化流程

初始化流程是由Cgicc构造函数触发的,一般可在CGImain函数中定义一个Cgicc对象:

5.      编译和安装CGICC

详细编译步骤如下:

1)       CGICC源代码包(本文下载的是cgicc-3.2.16.tar.gz)上传到Linux某目录(本文将CGICC源代码包cgicc-3.2.16.tar.gz上传到/tmp目录);

2)       登录Linux,并进入目录/tmp

3)       解压CGICC源代码包cgicc-3.2.16.tar.gztar xzf cgicc-3.2.16.tar.gz

4)       解压后,会在/tmp下产生一个子目录cgicc-3.2.16,进入到这个子目录;

5)       然后执行configure命令(本文指定的安装目录为/usr/local/cgicc-3.2.16,可以根据需要设定为其它目录),以生成Makefile编译文件,如果要在共享库中使用CGICC,请使用下列编译命令:

./configure --prefix=/usr/local/cgicc-3.2.16 CXXFLAGS=-fPIC LDFLAGS=-fPIC

 

否则,可按如下命令编译:

./configure --prefix=/usr/local/cgicc-3.2.16

 

在一些环境上,如果不带-fPIC编译静态库,使用静态库时,就会报链接错误。

6)       执行make编译:make

7)       安装CGICC库:make install

8)       /usr/local/cgicc-3.2.16建立不带版本号的软链接:

ln -s /usr/local/cgicc-3.2.16 /usr/local/cgicc

 

至此,CGICC库就安装好了!

6.      CGICC使用示例

6.1.     页面效果

6.2.     HTML文件

页面效果对应的HTML文件内容如下

HTML中的id一般是给前端如js使用的,而name通常是给服务端如CGI使用的)


   

       upload

   

 

   

       

upload:


       


            form action="/cgi-bin/upload.cgi" method="post" name="formname"

                  enctype="multipart/form-data">

               

               

               

               

           
       


   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值