首页
登录 | 注册

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

开源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">

               

               

               

               

           
       


   

相关文章

  • 本文旨在用最通俗的语言讲述最枯燥的基本知识 今日,看到有些文章对码农和程序员做了一些界限划定和差异分析,吓得作者赶紧研究一下自己属于哪个身份,但当仔细查看了这些文章后,发现其实对于写代码的人来说,无非就像周星驰嘴里的"龙套&quo ...
  • 推荐一个markdown格式转html格式的开源JavaScript库
    https://github.com/millerblack/markdown-js 新建一个以js结尾的文件,将下列内容粘贴进去: Hello World! Hello World! 除了nodejs以外,我们还可以在浏览器里使用这个开源 ...
  • 【实战】Docker 入门实战一:安装Dockeer
    Docker是什么Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实 ...
  • 一.LibCurl基本编程框架 libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl同样支持HTTPS证书授权,HTTP P ...
  • Centos 7安装和配置ElasticSearch入门小白 实验环境: 操作系统:Centos 7.5 服务器ip:192.168.1.198 运行用户:root 网络环境:Internet 在企业生产环境有很多服务器的时候.很多业务模块 ...
  • 对于PHP程序设计语言来说.每个人的学习方式不同,写这篇文章的目的是分享一下自己的学习过程,仅供参考,不要一味的用别人的学习方法,找对自己有用的 学习方式.经常在某些论坛和QQ群里看到一些朋友会问"怎样才能学好PHP,怎样才能学好 ...

2019 unjeep.com webmaster#unjeep.com
12 q. 0.014 s.
京ICP备10005923号