Latest web development tutorials

C ++ Programming Web

Apa CGI?

  • Common Gateway Interface (CGI), adalah standar yang mendefinisikan bagaimana informasi dipertukarkan antara Web server dan client-side scripting.
  • spesifikasi CGI saat ini dikelola oleh CGI NCSA, NCSA didefinisikan sebagai berikut:
  • Common Gateway Interface (CGI), adalah pintu gerbang untuk program eksternal dengan server informasi (seperti server HTTP) standar docking antarmuka.
  • Versi saat ini adalah CGI / 1.1, CGI / 1.2 versi maju.

web Browser

Untuk lebih memahami konsep CGI, mari kita klik pada hyperlink, isi halaman tertentu atau URL, dan melihat apa yang terjadi.

  • Browser Anda link pada HTTP server Web dan permintaan URL, yaitu, nama file.
  • Web server menyelesaikan URL, dan menemukan nama file. Jika Anda menemukan file yang diminta, server Web akan mengirim file kembali ke browser, jika tidak mengirim pesan kesalahan yang menunjukkan bahwa Anda meminta file yang salah.
  • Web browser untuk mendapatkan respon dari server web, dan berdasarkan respon yang diterima untuk menampilkan file atau pesan kesalahan.

Namun, sedemikian rupa untuk membangun server HTTP, terlepas dari kapan harus meminta direktori file, server HTTP tidak mengirimkan kembali file, tapi dalam bentuk pelaksanaan program dan pelaksanaan output yang dihasilkan dikirim kembali ke tampilan browser out.

Common Gateway Interface (CGI), adalah untuk membuat aplikasi (disebut program CGI atau script CGI) untuk bekerja dengan server Web dan klien berinteraksi protokol standar. Program CGI ini dapat menggunakan Python, PERL, Shell, C atau C ++, dll untuk mempersiapkan.

CGI Bagan

Ilustrasi berikut menunjukkan arsitektur CGI:

arsitektur CGI

konfigurasi server web

Sebelum Anda membuat pemrograman CGI, pastikan bahwa server Web Anda mendukung CGI, dan telah dikonfigurasi untuk menangani program CGI. Semua program CGI dijalankan oleh server HTTP, harus direktori pra-dikonfigurasi. Direktori ini disebut direktori CGI, dengan konvensi bernama / var / www / cgi-bin. Meskipun CGI file executable adalah C ++, tetapi dengan konvensi, itu adalahcgi ekstensi.

Secara default, server Web Apache akan dikonfigurasi untuk menjalankan di / var / www / cgi-bin dalam program CGI. Jika Anda ingin menentukan direktori lain untuk menjalankan script CGI, Anda dapat memodifikasi bagian berikut di file httpd.conf:

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options ExecCGI
   Order allow,deny
   Allow from all
</Directory>
 
<Directory "/var/www/cgi-bin">
Options All
</Directory>

Di sini, kita mengasumsikan Anda sudah memiliki server Web dan dapat berjalan dengan sukses, Anda dapat menjalankan program CGI, seperti Perl atau Shell dan sejenisnya.

Program CGI pertama

Pertimbangkan C ++ program berikut:

#include <iostream>
using namespace std;
 
int main ()
{
    
   cout << "Content-type:text/html\r\n\r\n";
   cout << "<html>\n";
   cout << "<head>\n";
   cout << "<title>Hello World - 第一个 CGI 程序</title>\n";
   cout << "</head>\n";
   cout << "<body>\n";
   cout << "<h2>Hello World! 这是我的第一个 CGI 程序</h2>\n";
   cout << "</body>\n";
   cout << "</html>\n";
   
   return 0;
}

Mengkompilasi kode sebelumnya, file executable bernama cplusplus.cgi, dan file ini disimpan di / var / www / direktori cgi-bin. Sebelum menjalankan program CGI, silakan gunakanchmod 755 cplusplus.cgi UNIX perintah untuk mengubah mode file, pastikan file tersebut dapat dieksekusi.Akses file executable, Anda akan melihat output sebagai berikut:

Hello World! Ini adalah program CGI pertama saya

C atas ++ adalah program yang sederhana, itu ditulis pada file output STDOUT ditampilkan di layar. Di sini, perlu dicatat bahwa baris pertama outputContent-type: text / html \ r \ n \ r \ n.baris ini dikirim kembali ke browser, dan ditakdirkan untuk ditampilkan di jenis browser konten jendela. Anda harus memahami konsep dasar dari CGI, sehingga untuk lebih menggunakan Python untuk menulis program CGI yang lebih kompleks. C ++ program CGI dapat digunakan dengan sistem eksternal lainnya (seperti RDBMS) untuk berinteraksi.

informasi header HTTP

BarisContent-type: text / html \ r \ n \ r \ n merupakan bagian integral dari informasi header HTTP, itu dikirim ke browser, dalam rangka untuk lebih memahami isi dari halaman.Dalam bentuk informasi header HTTP adalah sebagai berikut:

HTTP 字段名称: 字段内容
 
例如
Content-type: text/html\r\n\r\n

Ada informasi header HTTP penting lainnya, ini akan sering digunakan dalam pemrograman CGI Anda.

头信息 描述
Content-type: MIME 字符串,定义返回的文件格式。例如 Content-type:text/html。
Expires: Date 信息变成无效的日期。浏览器使用它来判断一个页面何时需要刷新。一个有效的日期字符串的格式应为 01 Jan 1998 12:00:00 GMT。
Location: URL 这个 URL 是指应该返回的 URL,而不是请求的 URL。你可以使用它来重定向一个请求到任意的文件。
Last-modified: Date 资源的最后修改日期。
Content-length: N 要返回的数据的长度,以字节为单位。浏览器使用这个值来表示一个文件的预计下载时间。
Set-Cookie: String 通过string设置 cookie。

Variabel CGI Lingkungan

Semua program CGI dapat mengakses variabel lingkungan berikut. Variabel-variabel ini ketika menulis program CGI memainkan peran yang sangat penting.

变量名 描述
CONTENT_TYPE 内容的数据类型。当客户端向服务器发送附加内容时使用。例如,文件上传等功能。
CONTENT_LENGTH 查询的信息长度。只对 POST 请求可用。
HTTP_COOKIE 以键 & 值对的形式返回设置的 cookies。
HTTP_USER_AGENT 用户代理请求标头字段,递交用户发起请求的有关信息,包含了浏览器的名称、版本和其他平台性的附加信息。
PATH_INFO CGI 脚本的路径。
QUERY_STRING 通过 GET 方法发送请求时的 URL 编码信息,包含 URL 中问号后面的参数。
REMOTE_ADDR 发出请求的远程主机的 IP 地址。这在日志记录和认证时是非常有用的。
REMOTE_HOST 发出请求的主机的完全限定名称。如果此信息不可用,则可以用 REMOTE_ADDR 来获取 IP 地址。
REQUEST_METHOD 用于发出请求的方法。最常见的方法是 GET 和 POST。
SCRIPT_FILENAME CGI 脚本的完整路径。
SCRIPT_NAME CGI 脚本的名称。
SERVER_NAME 服务器的主机名或 IP 地址。
SERVER_SOFTWARE 服务器上运行的软件的名称和版本。

Berikut ini daftar semua program CGI variabel CGI.

#include <iostream>
#include <stdlib.h>
using namespace std;

const string ENV[ 24 ] = {                 
        "COMSPEC", "DOCUMENT_ROOT", "GATEWAY_INTERFACE",   
        "HTTP_ACCEPT", "HTTP_ACCEPT_ENCODING",             
        "HTTP_ACCEPT_LANGUAGE", "HTTP_CONNECTION",         
        "HTTP_HOST", "HTTP_USER_AGENT", "PATH",            
        "QUERY_STRING", "REMOTE_ADDR", "REMOTE_PORT",      
        "REQUEST_METHOD", "REQUEST_URI", "SCRIPT_FILENAME",
        "SCRIPT_NAME", "SERVER_ADDR", "SERVER_ADMIN",      
        "SERVER_NAME","SERVER_PORT","SERVER_PROTOCOL",     
        "SERVER_SIGNATURE","SERVER_SOFTWARE" };   

int main ()
{
    
   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";
   cout << "<table border = \"0\" cellspacing = \"2\">";

   for ( int i = 0; i < 24; i++ )
   {
       cout << "<tr><td>" << ENV[ i ] << "</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;
}

library C ++ CGI

Dalam contoh nyata, Anda perlu melakukan banyak operasi oleh program CGI. Ada program yang dirancang khusus untuk perpustakaan CGI C ++ ditulis, kita dapat ftp://ftp.gnu.org/gnu/cgicc/~~V Download perpustakaan CGI ini, perpustakaan dan dipasang sesuai dengan langkah-langkah berikut:

$tar xzf cgicc-X.X.X.tar.gz 
$cd cgicc-X.X.X/ 
$./configure --prefix=/usr 
$make
$make install

Anda dapat klik pada C ++ CGI Lib Dokumentasi , melihat dokumen perpustakaan.

GET dan metode POST

Anda mungkin mengalami situasi seperti ini, ketika Anda harus melewati beberapa informasi dari browser ke Web server, dan akhirnya diteruskan ke program CGI. Biasanya browser dua cara untuk menggunakan informasi ini ke server Web yang GET dan POST metode.

Gunakan metode GET untuk menyampaikan informasi

GET metode untuk mengirimkan informasi pengguna dikodekan ditambahkan ke permintaan halaman. Halaman dan informasi dikodekan dipisahkan oleh karakter, sebagai berikut ?:

http://www.test.com/cgi-bin/cpp.cgi?key1=value1&key2=value2

Metode GET adalah metode default dari browser untuk transfer informasi server Web, itu adalah string panjang string yang dihasilkan di address bar browser. Ketika password atau informasi sensitif lainnya yang lolos ke server, tidak menggunakan metode GET. GET metode terbatas dalam ukuran, permintaan transfer tali hingga 1024 karakter.

Bila Anda menggunakan metode GET adalah dengan menggunakan QUERY_STRING sundulan http untuk mengirimkan informasi, menggunakan variabel lingkungan QUERY_STRING dalam program CGI untuk mengakses.

Anda dapat bersaing dengan kunci dalam URL dari koneksi sederhana, Anda juga dapat menggunakan metode GET HTML <FORM> tag untuk mengirimkan informasi.

Sederhana Contoh URL: Dapatkan Metode

Berikut ini adalah URL sederhana, menggunakan metode GET untuk lulus dua nilai ke hello_get.py Program.

/cgi-bin/cpp_get.cgi?first_name=ZARA&last_name=ALI

Contoh berikut menghasilkan programCGI cpp_get.cgi untuk memproses input yang diberikan oleh browser Web.Dengan menggunakan library C ++ CGI, Anda dapat dengan mudah mengakses informasi transmisi:

#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;
}

Sekarang, mengkompilasi program di atas sebagai berikut:

$g++ -o cpp_get.cgi cpp_get.cpp -lcgicc

Menghasilkan cpp_get.cgi, dan meletakkannya di direktori CGI dan mencoba untuk mengakses tautan berikut:

/cgi-bin/cpp_get.cgi?first_name=ZARA&last_name=ALI

Ini menghasilkan hasil sebagai berikut:

名:ZARA 
姓:ALI 

Contoh bentuk sederhana: metode GET

Berikut ini adalah contoh sederhana, menggunakan bentuk HTML dan tombol submit melewati dua nilai. Kami akan menggunakan script CGI yang sama cpp_get.cgi untuk memproses input.

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

Berikut adalah output aktual dari formulir, masukkan nama pertama dan terakhir, kemudian klik pada tombol submit untuk melihat hasil.

Menggunakan metode POST untuk mengirimkan informasi

Metode yang lebih handal menyampaikan informasi kepada program CGI adalah metode POST. Metode ini kemasan informasi dengan metode GET dengan cara yang sama, kecuali bahwa itu bukan pesan sebagai string teks dalam URL? Setelah disahkan, tapi memasukkannya ke dalam pesan terpisah dalam bentuk pengiriman. pesan diteruskan ke standar input dalam bentuk skrip CGI.

Kami juga menggunakan cpp_get.cgi untuk menangani metode POST. Mari kita ambil contoh yang sama, untuk lulus melalui penggunaan bentuk HTML dan tombol submit dua nilai, tapi kali ini kita tidak menggunakan metode GET, tetapi metode POST, sebagai berikut:

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

program CGI untuk melewatkan data ke kotak

Bila Anda perlu memilih beberapa opsi, kita menggunakan kotak centang.

Kode HTML berikut contoh adalah bentuk dengan dua kotak centang:

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

Berikut C ++ Program akan menghasilkan script cpp_checkbox.cgi untuk menangani browser Web dengan memasukkan kotak yang diberikan.

#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;
}

Mentransfer data ke program CGI tombol radio

Ketika hanya perlu memilih opsi, kita menggunakan tombol radio.

Kode HTML berikut contoh adalah bentuk dengan dua tombol radio:

<form action="/cgi-bin/cpp_radiobutton.cgi" 
         method="post" 
         target="_blank">
<input type="radio" name="subject" value="maths" 
                                    checked="checked"/> 数学 
<input type="radio" name="subject" value="physics" /> 物理
<input type="submit" value="选择学科" />
</form>

Berikut C ++ Program akan menghasilkan script cpp_radiobutton.cgi untuk menangani browser Web input melalui tombol radio.

#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>向 CGI 程序传递单选按钮数据</title>\n";
   cout << "</head>\n";
   cout << "<body>\n";

   form_iterator fi = formData.getElement("subject");  
   if( !fi->isEmpty() && fi != (*formData).end()) {  
      cout << "Radio box selected: " << **fi << endl;  
   }
  
   cout << "<br/>\n";
   cout << "</body>\n";
   cout << "</html>\n";
   
   return 0;
}

Mentransfer data ke area teks program CGI

Program CGI ketika Anda perlu untuk mentransfer beberapa baris teks, kita menggunakan elemen textarea.

Kode HTML berikut contoh adalah bentuk dengan kotak textarea:

<form action="/cgi-bin/cpp_textarea.cgi" 
         method="post" 
         target="_blank">
<textarea name="textcontent" cols="40" rows="4">
请在这里输入文本...
</textarea>
<input type="submit" value="提交" />
</form>

Berikut C ++ Program akan menghasilkan script cpp_textarea.cgi untuk menangani masukan yang diberikan oleh browser Web, area teks.

#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>向 CGI 程序传递文本区域数据</title>\n";
   cout << "</head>\n";
   cout << "<body>\n";

   form_iterator fi = formData.getElement("textcontent");  
   if( !fi->isEmpty() && fi != (*formData).end()) {  
      cout << "Text Content: " << **fi << endl;  
   }else{
      cout << "No text entered" << endl;  
   }
  
   cout << "<br/>\n";
   cout << "</body>\n";
   cout << "</html>\n";
   
   return 0;
}

Kotak drop-down untuk melewatkan data ke program CGI

Ketika ada beberapa pilihan yang tersedia, tetapi hanya dapat memilih satu atau dua pilihan, kita menggunakan kotak drop-down.

Kode HTML berikut contoh adalah bentuk dengan kotak drop-down:

<form action="/cgi-bin/cpp_dropdown.cgi" 
                       method="post" target="_blank">
<select name="dropdown">
<option value="Maths" selected>数学</option>
<option value="Physics">物理</option>
</select>
<input type="submit" value="提交"/>
</form>

Berikut C ++ Program akan menghasilkan script cpp_dropdown.cgi untuk menangani input browser Web melalui kotak drop-down yang diberikan.

#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>向 CGI 程序传递下拉框数据</title>\n";
   cout << "</head>\n";
   cout << "<body>\n";

   form_iterator fi = formData.getElement("dropdown");  
   if( !fi->isEmpty() && fi != (*formData).end()) {  
      cout << "Value Selected: " << **fi << endl;  
   }
  
   cout << "<br/>\n";
   cout << "</body>\n";
   cout << "</html>\n";
   
   return 0;
}

Gunakan Cookies di CGI,

protokol HTTP adalah protokol stateless. Tapi untuk website bisnis, perlu menyimpan informasi sesi antara halaman yang berbeda. Misalnya, pengguna setelah selesainya beberapa langkah mengakhiri halaman registrasi. Namun, bagaimana mempertahankan Info sesi pengguna pada setiap halaman.

Dalam banyak kasus, penggunaan cookie adalah untuk mengingat dan melacak informasi mengenai preferensi pengguna, pembelian, komisi dan metode yang paling efektif lainnya untuk mengejar lebih baik pengalaman pengunjung atau situs statistik diperlukan informasi.

Cara kerjanya

Server dalam bentuk cookie untuk mengirim beberapa data ke browser pengunjung. Jika browser menerima cookie, cookie akan disimpan sebagai teks biasa direkam pada hard drive pengunjung. Sekarang, ketika pengunjung ke halaman lain di situs, mengambil cookie. Setelah Anda menemukan cookie, server akan tahu apa yang disimpan.

Cookie adalah murni data teks catatan, lima bidang variabel-panjang dengan:

  • Kedaluwarsa: tanggal kedaluwarsa kuki.Jika bidang ini dibiarkan kosong, cookie yang akan berakhir bila pengunjung keluar dari browser.
  • Domain: situs nama domain.
  • Path: Mengatur direktori path kue atau halaman.Jika Anda ingin mengambil cookie dari setiap direktori atau halaman, bidang ini dapat dibiarkan kosong.
  • Aman: Jika bidang ini berisi kata "mengamankan", maka cookie dapat diambil melalui server yang aman.Jika bidang ini dibiarkan kosong, tidak ada pembatasan ada.
  • Nama = Nilai: kue dalam bentuk pasangan kunci-nilai yang akan ditetapkan dan mendapatkan.

pengaturan Cookies

Kirim cookies ke browser sangat sederhana. Cookies ini akan sebelum bidang Content-type, dan header HTTP untuk dikirim bersama-sama. Misalkan Anda ingin mengatur UserID dan Password untuk cookies, mengatur cookie langkah adalah sebagai berikut:

#include <iostream>
using namespace std;

int main ()
{
 
   cout << "Set-Cookie:UserID=XYZ;\r\n";
   cout << "Set-Cookie:Password=XYZ123;\r\n";
   cout << "Set-Cookie:Domain=www.w3cschool.cc;\r\n";
   cout << "Set-Cookie:Path=/perl;\n";
   cout << "Content-type:text/html\r\n\r\n";

   cout << "<html>\n";
   cout << "<head>\n";
   cout << "<title>CGI 中的 Cookies</title>\n";
   cout << "</head>\n";
   cout << "<body>\n";

   cout << "设置 cookies" << endl;  
  
   cout << "<br/>\n";
   cout << "</body>\n";
   cout << "</html>\n";
   
   return 0;
}

Dari contoh ini, kita belajar bagaimana mengatur cookie. Kami menggunakan headerHTTP Set-Cookie untuk mengatur cookie.

Berikut adalah beberapa properti untuk mengatur cookie adalah opsional, seperti Habis, Domain dan Path. Perlu dicatat, cookie dikirim di baris"Content-type: text / html \ r \ n \ r \ nsebelum ditetapkan.

Mengkompilasi program di atas yang menghasilkan setcookies.cgi, dan mencoba untuk menggunakan link berikut untuk mengatur cookie. Ini akan menyiapkan empat cookies di komputer Anda:

/cgi-bin/setcookies.cgi

Dapatkan Cookies

cookies untuk mengambil semua pengaturan yang sangat sederhana. cookies disimpan dalam CGI variabel lingkungan HTTP_COOKIE, dan bentuk mereka disimpan sebagai berikut:

key1=value1;key2=value2;key3=value3....

Contoh berikut menunjukkan bagaimana untuk mendapatkan cookies.

#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 cgi;
   const_cookie_iterator cci;

   cout << "Content-type:text/html\r\n\r\n";
   cout << "<html>\n";
   cout << "<head>\n";
   cout << "<title>CGI 中的 Cookies</title>\n";
   cout << "</head>\n";
   cout << "<body>\n";
   cout << "<table border = \"0\" cellspacing = \"2\">";
   
   // 获取环境变量
   const CgiEnvironment& env = cgi.getEnvironment();

   for( cci = env.getCookieList().begin();
        cci != env.getCookieList().end(); 
        ++cci )
   {
      cout << "<tr><td>" << cci->getName() << "</td><td>";
      cout << cci->getValue();                                 
      cout << "</td></tr>\n";
   }
   cout << "</table><\n";
  
   cout << "<br/>\n";
   cout << "</body>\n";
   cout << "</html>\n";
   
   return 0;
}

Sekarang, mengkompilasi program di atas menghasilkan getcookies.cgi, dan mencoba untuk menggunakan link berikut untuk mendapatkan semua cookie yang tersedia di komputer Anda:

/cgi-bin/getcookies.cgi

Ini akan menghasilkan daftar yang menunjukkan keempat cookies cookies yang lain pada set dan komputer Anda:

UserID XYZ 
Password XYZ123 
Domain www.w3cschool.cc 
Path /perl 

Contoh upload file

Untuk meng-upload file, bentuk HTML harus enctype atribut diatur kemultipart / form-data.masukan tag dengan jenis file akan membuat tombol "Browse".

<html>
<body>
   <form enctype="multipart/form-data" 
            action="/cgi-bin/cpp_uploadfile.cgi" 
            method="post">
   <p>文件:<input type="file" name="userfile" /></p>
   <p><input type="submit" value="上传" /></p>
   </form>
</body>
</html>

Hasil kode ini adalah bentuk berikut:

dokumen:

Catatan: Contoh di atas telah sengaja dinonaktifkan dalam disimpan di server kami untuk meng-upload file.Anda dapat mencoba kode di atas pada server Anda.

Berikut ini adalah digunakan untuk memprosescpp_uploadfile.cpp upload file naskah:

#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 cgi;

   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";

   // 获取要被上传的文件列表
   const_file_iterator file = cgi.getFile("userfile");
   if(file != cgi.getFiles().end()) {
      // 在 cout 中发送数据类型
      cout << HTTPContentHeader(file->getDataType());
      // 在 cout 中写入内容
      file->writeToStream(cout);
   }
   cout << "<文件上传成功>\n";
   cout << "</body>\n";
   cout << "</html>\n";
   
   return 0;
}

Contoh di atas adalah untuk menulis kecout sungai, tetapi Anda dapat membuka file stream, dan isi dari file upload di file di lokasi target.