
CGICC是一個C++語言實作的開源CGI庫,采用LGPL授權協定,使用較為簡單。
CGICC由兩大部分組成:
1) CGI輸入處理子子產品
2) HTML輸出子子產品
CGICC的一類,通常直接在CGI的入口函數,如main函數中定義一個CGICC對象,然後即可使用CGICC提供的各種能力。
提供get系列方法取各環境變量的值。
提花get系列方法取各Cookie的值,并支援set新增或修改Cookie值。
CgiEnvironment内部類,僅供CgiEnvironment使用。
提供通路HTML的Form中的被上傳檔案資訊和資料接口。
提供通路HTML的Form中的非被上傳檔案類的資訊和資料接口。
取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
初始化流程是由Cgicc構造函數觸發的,一般可在CGI的main函數中定義一個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.gz:tar xzf cgicc-3.2.16.tar.gz;
4) 解壓後,會在/tmp下産生一個子目錄cgicc-3.2.16,進入到這個子目錄;
5) 然後執行configure指令(本文指定的安裝目錄為<b>/usr/local/cgicc-3.2.16</b>,可以根據需要設定為其它目錄),以生成Makefile編譯檔案,如果要在共享庫中使用CGICC,請使用下列編譯指令:
./<b>configure</b> --prefix=<b>/usr/local/cgicc-3.2.16</b> <b>CXXFLAGS</b>=-fPIC <b>LDFLAGS</b>=-fPIC
否則,可按如下指令編譯:
./<b>configure</b> --prefix=<b>/usr/local/cgicc-3.2.16</b>
在一些環境上,如果不帶-fPIC編譯靜态庫,使用靜态庫時,就會報連結錯誤。
6) 執行make編譯:make
7) 安裝CGICC庫:make install
8) 為<b>/usr/local/cgicc-3.2.16</b>建立不帶版本号的軟連結:
<b>ln -s</b> <b>/usr/local/cgicc-3.2.16 /usr/local/cgicc</b>
至此,CGICC庫就安裝好了!
頁面效果對應的HTML檔案内容如下
(HTML中的id一般是給前端如js使用的,而name通常是給服務端如CGI使用的):
upload
upload:
form action="/cgi-bin/upload.cgi" method="<b>post</b>"
name="formname"
enctype="<b>multipart/form-data</b>">