- Từ coder đến developer – Tôi đi code dạo
- C/C++ – Tạo Nền Tảng Vững Chắc Cho Sự Phát Triển Lập Trình
- Lộ trình học Lập trình web từ A – Z cho người mới bắt đầu
- Jsp servlet là gì, học jsp servlet, lập trình web với java jsp servlet cơ bản miễn phí dành cho người mới học java web chưa biết gì mới bắt đầu
- Trọn bộ giáo trình c# windows form – Những sai lầm khi làm lập trình
Contents
- 1 GIỚI THIỆU
- 2 CGI là gì?
- 3 Web Browsing
- 4 SƠ ĐỒ CẤU TRÚC CGI
- 5 CẤU HÌNH WEB SERVER
- 6 CHƯƠNG TRÌNH CGI ĐẦU TIÊN
- 7 HTTP HEADER
- 8 BIẾN MÔI TRƯỜNG CỦA CGI
- 9 THƯ VIỆN CGI TRONG C++
- 10 PHƯƠNG THỨC POST VÀ GET
- 10.1 Truyền thông tin bằng phương thức GET
- 10.2 Truyền thông tin bằng phương thức POST
- 10.3 Truyền dữ liệu Checkbox tới CGI Program
- 10.4 Truyền dữ liệu Radiobutton tới CGI Program
- 10.5 Truyền dữ liệu Text Area tới CGI Program
- 10.6 Truyền dữ liệu Dropdown Box tới CGI Program
- 10.7 Sử dụng Cookie trong CGI
- 10.8 Ví dụ về File Upload
GIỚI THIỆU
Lập trình web là một lĩnh vực phát triển ứng dụng web sử dụng ngôn ngữ lập trình C++. Trong bài viết này, chúng ta sẽ tìm hiểu về CGI và cách lập trình web trong C++.
Bạn đang xem: Lập trình Web trong C++
CGI là gì?
Common Gateway Interface (CGI) là một tập hợp các chuẩn định nghĩa cách thông tin được trao đổi giữa Web Server và một Custom Script. CGI Specification được duy trì bởi NCSA và định nghĩa CGI như một chuẩn cho các chương trình kết nối thiết bị mạng ngoại vi (external gateway programs) tới thông tin từ Server như HTTP Server. CGI được viết bằng Python, PERL, Shell, C hoặc C++.
Web Browsing
Trang web đang tồn tại nhờ vào quá trình trình duyệt web liên hệ với HTTP Web Server và yêu cầu một URL cụ thể. Web Server sẽ tìm kiếm file đã yêu cầu và gửi lại trình duyệt nếu tìm thấy, nếu không sẽ gửi một thông báo lỗi. Trình duyệt nhận phản hồi từ Web Server và hiển thị file đã nhận hoặc thông báo lỗi.
Tuy nhiên, có trường hợp HTTP Server được thiết lập để thực thi file như là một chương trình và gửi output tới trình duyệt thay vì gửi lại file. CGI là một giao thức chuẩn cho các ứng dụng tương tác với Web Server và Client.
SƠ ĐỒ CẤU TRÚC CGI
Đây là sơ đồ cấu trúc đơn giản của CGI:
CẤU HÌNH WEB SERVER
Để thực hiện lập trình CGI, trước tiên hãy chắc chắn rằng Web Server của bạn hỗ trợ CGI và đã được cấu hình để xử lý CGI Program. Tất cả các CGI program cần được giữ trong một thư mục đã được định cấu hình trước. Thư mục này thường được đặt tên là /var/www/cgi-bin.
Xem thêm : Tin lập trình
Apache Web Server mặc định được cấu hình để chạy CGI Program trong /var/www/cgi-bin. Nếu bạn muốn chạy CGI script của bạn trong một thư mục khác, bạn cần sửa đổi file httpd.conf.
CHƯƠNG TRÌNH CGI ĐẦU TIÊN
Dưới đây là một chương trình CGI đơn giản viết bằng C++:
#include <iostream>
using namespace std;
int main () {
cout << "Content-type:text/htmlrnrn";
cout << "<html>n";
cout << "<head>n";
cout << "<title>Hello World - Chuong trinh CGI dau tien</title>n";
cout << "</head>n";
cout << "<body>n";
cout << "<h2>Hello World! Day la Chuong trinh CGI dau tien cua toi</h2>n";
cout << "</body>n";
cout << "</html>n";
return 0;
}
Để chạy chương trình CGI trên, hãy biên dịch nó và đặt tên là cplusplus.cgi
. Trước khi chạy CGI Program, hãy chắc chắn rằng bạn đã set quyền thực thi cho file bằng lệnh chmod 755 cplusplus.cgi
. Kết quả sẽ là một trang web hiển thị thông điệp “Hello World! Đây là chương trình CGI đầu tiên của tôi”.
HTTP HEADER
Dòng Content-type:text/htmlrnrn
là một phần của HTTP Header, được gửi tới trình duyệt để xác định kiểu nội dung mà sẽ được hiển thị trên màn hình trình duyệt. Dưới đây là một số HTTP Header quan trọng trong lập trình CGI:
Content-type
: Kiểu MIME định nghĩa định dạng của file đang được trả về.Expires
: Ngày thông tin hết hiệu lực.Location
: URL mà nên được trả về thay cho URL đã yêu cầu.Last-modified
: Ngày sửa đổi cuối cùng của nguồn.Content-length
: Độ dài, bằng byte, của dữ liệu đang được trả về.Set-Cookie
: Thiết lập cookie đã truyền thông qua string.
BIẾN MÔI TRƯỜNG CỦA CGI
Tất cả các CGI Program đều có truy cập tới các biến môi trường sau:
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.CONTENT_LENGTH
: Độ dài của thông tin truy vấn.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 đó.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 đó.REMOTE_HOST
: Tên đầy đủ của host tạo yêu cầu đó.REQUEST_METHOD
: Phương thức được sử dụng để tạo yêu cầu.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.
THƯ VIỆN CGI TRONG C++
Có một thư viện CGI được viết cho chương trình C++ để làm cho việc lập trình CGI dễ dàng hơn. Bạn có thể tải thư viện này từ đây và cài đặt nó trên hệ thống của bạn.
PHƯƠNG THỨC POST VÀ GET
Hai phương thức phổ biến được sử dụng để truyền thông tin từ trình duyệt tới Web Server là phương thức GET và POST.
Truyền thông tin bằng phương thức GET
Phương thức GET gửi thông tin người dùng đã mã hóa phụ thêm tới trang yêu cầu. Phương thức GET là phương thức mặc định để truyền thông tin từ trình duyệt tới Web Server.
Truyền thông tin bằng phương thức POST
Phương thức POST được sử dụng để truyền thông tin tới một CGI Program. Nó tạo ra một thông báo riêng biệt để gửi thông tin tới CGI Script.
Truyền dữ liệu Checkbox tới CGI Program
Xem thêm : Download toàn bộ giáo trình lập trình C pdf cho người mới bắt đầu
Checkbox được sử dụng khi có nhiều hơn một tùy chọn và người dùng có thể chọn một hoặc nhiều tùy chọn. Mỗi checkbox sẽ được mã hóa thành một cặp key/value khi chúng được gửi đến CGI Program.
Radio button được sử dụng khi chỉ có một tùy chọn và người dùng chỉ có thể chọn một tùy chọn. Khi một radio button được chọn, giá trị của radio button đó sẽ được gửi đến CGI Program.
Truyền dữ liệu Text Area tới CGI Program
Textarea được sử dụng khi muốn người dùng nhập vào văn bản dài hơn một dòng. Nội dung của textarea sẽ được gửi đến CGI Program.
Truyền dữ liệu Dropdown Box tới CGI Program
Dropdown box được sử dụng khi có nhiều tùy chọn có sẵn, nhưng chỉ có một tùy chọn sẽ được chọn. Khi người dùng chọn một tùy chọn từ dropdown box, giá trị của tùy chọn đó sẽ được gửi đến CGI Program.
Sử dụng Cookie trong CGI
Cookie là một phương thức hiệu quả để lưu trữ thông tin session giữa các trang trong một website. Bằng cách thiết lập cookie, Server có thể nhớ thông tin session của người dùng.
Để thiết lập cookie, chúng ta sử dụng HTTP Header Set-Cookie
. Để thu hồi cookie, chúng ta truy cập biến môi trường CGI HTTP_COOKIE
.
Ví dụ về File Upload
Để tải lên một file, HTML code phải có thuộc tính enctype
được thiết lập là multipart/form-data
. Thẻ input với kiểu file sẽ tạo một nút “Browse” để chọn file.
Trong ví dụ này, chúng ta sử dụng CGI Program để xử lý việc upload file. Khi người dùng chọn một file và nhấn nút “Upload”, CGI Program sẽ nhận file và lưu trữ nó tại vị trí mong muốn.
Với các kiến thức về CGI và các phương thức truyền dữ liệu, bạn có thể viết các ứng dụng web phức tạp sử dụng ngôn ngữ lập trình C++.
Nguồn: https://laptrinhc.edu.vn
Danh mục: Tài liệu IT