Lập trình Web trong C++
Biến môi trường của CGI
quan trọng trong khi viết bất kỳ CGI Program nào:
Tên biến Miêu tả
CONTENT_TYPE Kiểu dữ liệu của nội dung. Được sử dụng khi Client gửi nội dung đính kèm tới Server. Ví dụ: file upload
CONTENT_LENGTH Độ dài của thông tin truy vấn. Nó chỉ có sẵn cho các yêu cầu POST
HTTP_COOKIE Trả về các cookie đã thiết lập trong form là cặp key/value
HTTP_USER_AGENT Trường request-header là User-Agent chứa thông tin về User Agent bắt đầu yêu cầu đó. Nó là tên của trình duyệt web
http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 176
PATH_INFO Là path cho CGI script
QUERY_STRING Thông tin mã hóa URL được gửi với phương thức GET
REMOTE_ADDR Địa chỉ IP của host từ xa tạo yêu cầu đó. Nó có thể là hữu ích cho mục đích log hoặc authentication
REMOTE_HOST Tên đầy đủ của host tạo yêu cầu đó. Nếu thông tin này không có sẵn, thì REMOTE_ADDR có thể được sử dụng để lấy địa chỉ IP
REQUEST_METHOD Phương thức được sử dụng để tạo yêu cầu. Các phương thức phổ biến là GET và POST
SCRIPT_FILENAME Path đầy đủ tới CGI script
SCRIPT_NAME Tên của CGI script
SERVER_NAME Hostname hoặc địa chỉ IP của Server
SERVER_SOFTWARE Tên và phiên bản của phần mềm mà Server đang chạy
Sau đây là chương trình CGI nhỏ để liệt kê tất cả biến CGI. Bạn click vào đây để xem kết quả:Get Environment
#include <iostream> #include <stdlib.h> using namespace std;
http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 177 "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 Envrionment Variables</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>"; // attempt to retrieve value of environment variable char *value = getenv( ENV[ i ].c_str() );
if ( value != 0 ){
cout << value; }else{
cout << "Environment variable does not exist."; }
cout << "</td></tr>\n"; }
http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 178 cout << "</table><\n"; cout << "</body>\n"; cout << "</html>\n";