当前位置:K88软件开发文章中心编程语言C/C++C/C++01 → 文章内容

C++ Web 编程

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-11 13:06:16

td><td>";// 尝试检索环境变量的值char *value = getenv( ENV[ i ].c_str() );if ( value != 0 ){cout << value;}else{cout << "环境变量不存在。";}cout << "</td></tr>\n";}cout << "</table><\n";cout << "</body>\n";cout << "</html>\n";return 0;}C++ CGI 库在真实的实例中,您需要通过 CGI 程序执行许多操作。这里有一个专为 C++ 程序而编写的 CGI 库,我们可以从 ftp:





//ftp.gnu.org/gnu/cgicc/ 上下载这个 CGI 库,并按照下面的步骤安装库:$ tar xzf cgicc-X.X.X.tar.gz $ cd cgicc-X.X.X/ $ ./configure --prefix=/usr $ make$ make install注意:libcgicc.so 和 libcgicc.a 库会被安装到/usr/lib目录下,需执行拷贝命令:$ sudo cp /usr/lib/libcgicc.* /usr/lib64/才能使 CGI 程序自动找到 libcgicc.so 动态链接库。您可以点击 C++ CGI Lib Documentation,查看相关的库文档。GET 和 POST 方法您可能有遇到过这样的情况,当您需要从浏览器传递一些信息到 Web 服务器,最后再传到 CGI 程序。通常浏览器会使用两种方法把这个信息传到 Web 服务器,分别是 GET 和 POST 方法。使用 GET 方法传递信息GET 方法发送已编码的用户信息追加到页面请求中。页面和已编码信息通过 ? 字符分隔开,如下所示:http:





//www.test.com/cgi-bin/cpp.cgi?key1=value1&key2=value2GET 方法是默认的从浏览器向 Web 服务器传信息的方法,它会在浏览器的地址栏中生成一串很长的字符串。当您向服务器传密码或其他一些敏感信息时,不要使用 GET 方法。GET 方法有大小限制,在一个请求字符串中最多可以传 1024 个字符。 当使用 GET 方法时,是使用 QUERY_STRING http 头来传递信息,在 CGI 程序中可使用 QUERY_STRING 环境变量来访问。您可以通过在 URL 后跟上简单连接的键值对,也可以通过使用 HTML <FORM> 标签的 GET 方法来传信息。简单的 URL 实例:Get 方法下面是一个简单的 URL,使用 GET 方法传递两个值给 hello_get.py 程序。/cgi-bin/cpp_get.cgi?first_name=ZARA&last_name=ALI下面的实例生成 cpp_get.cgi CGI 程序,用于处理 Web 浏览器给出的输入。通过使用 C++ CGI 库,可以很容易地访问传递的信息:实例





#include <iostream>





#include <vector>





#include <string>





#include <stdio.h>





#include <stdlib.h>





#include <cgicc/CgiDefs.h>





#include <cgicc/Cgicc.h>





#include <cgicc/HTTPHTMLHeader.h>





#include <cgicc/HTMLClasses.h> using namespace std;using namespace cgicc;int main (){Cgicc formData;cout << "Content-type:





text/html\r\n\r\n";cout << "<html>\n";cout << "<head>\n";cout << "<title>使用 GET 和 POST 方法</title>\n";cout << "</head>\n";cout << "<body>\n";form_iterator fi = formData.getElement("first_name");if( !fi->isEmpty() && fi != (*formData).end()) {cout << "名:" << **fi << endl;}else{cout << "No text entered for first name" << endl;}cout << "<br/>\n";fi = formData.getElement("last_name");if( !fi->isEmpty() &&fi != (*formData).end()) {cout << "姓:" << **fi << endl;}else{cout << "No text entered for last name" << endl;}cout << "<br/>\n";cout << "</body>\n";cout << "</html>\n";return 0;}现在,编译上面的程序,如下所示:$g++ -o cpp_get.cgi cpp_get.cpp -lcgicc生成 cpp_get.cgi,并把它放在 CGI 目录中,并尝试使用下面的链接进行访问:/cgi-bin/cpp_get.cgi?first_name=ZARA&last_name=ALI这会产生以下结果:名:ZARA 姓:ALI 简单的表单实例:GET 方法下面是一个简单的实例,使用 HTML 表单和提交按钮传递两个值。我们将使用相同的 CGI 脚本 cpp_get.cgi 来处理输入。<form action="/cgi-bin/cpp_get.cgi" method="get">名:<input type="text" name="first_name"> <br />姓:<input type="text" name="last_name" /><input type="submit" value="提交" /></form>下面是上述表单的实际输出,请输入名和姓,然后点击提交按钮查看结果。使用 POST 方法传递信息一个更可靠的向 CGI 程序传递信息的方法是 POST 方法。这种方法打包信息的方式与 GET 方法相同,不同的是,它不是把信息以文本字符串形式放在 URL 中的 ? 之后进行传递,而是把它以单独的消息形式进行传递。该消息是以标准输入的形式传给 CGI 脚本的。我们同样使用 cpp_get.cgi 程序来处理 POST 方法。让我们以同样的例子,通过使用 HTML 表单和提交按钮来传递两个值,只不过这次我们使用的不是 GET 方法,而是 POST 方法,如下所示:<form action="/cgi-bin/cpp_get.cgi" method="post">名:<input type="text" name="first_name"><br />姓:<input type="text" name="last_name" /><input type="submit" value="提交" /></form>向 CGI 程序传递复选框数据当需要选择多个选项时,我们使用复选框。下面的 HTML 代码实例是一个带有两个复选框的表单:<form action="/cgi-bin/cpp_checkbox.cgi"method="POST"target="_blank"><input type="checkbox" name="maths" value="on" /> 数学<input type="checkbox" name="physics" value="on" /> 物理<input type="submit" value="选择学科" /></form>下面的 C++ 程序会生成 cpp_checkbox.cgi 脚本,用于处理 Web 浏览器通过复选框给出的输入。实例





#include <iostream>





#include <vector>





#include <string>





#include <stdio.h>





#include <stdlib.h>





#include <cgicc/CgiDefs.h>





#include <cgicc/Cgicc.h>





#include <cgicc/HTTPHTMLHeader.h>





#include <cgicc/HTMLClasses.h> using namespace std;using namespace cgicc;int main (){Cgicc formData;bool maths_flag, physics_flag;cout << "Content-type:





text/html\r\n\r\n";cout << "<html>\n";cout << "<head>\n";cout << "<title>向 CGI 程序传递复选框数据</title>\n";cout << "</head>\n";cout << "<body>\n";maths_flag = formData.queryCheckbox("maths");if( maths_flag ) {cout << "Maths Flag:





ON " << endl;}else{cout << "Maths Flag:





OFF " << endl;}cout << "<br/>\n";physics_flag = formData.queryCheckbox("physics");if( physics_flag ) {cout << "Physics Flag:





ON " << endl;}else{cout << "Physics Flag:





OFF " << endl;}cout << "<br/>\n";cout << "</body>\n";cout << "</html>\n";return 0;}向 CGI 程序传递单选按钮数据当只需要选择一个选项时,我们使用单选按钮。下面的 HTML 代码实例是一个带有两个单选按钮的表单:<form action="/cgi-bin/cpp_radiobutton.cgi"method="post"target="_blank"><input ty

上一页  [1] [2] [3] [4]  下一页


C++ Web 编程