Hướng dẫn python cgi html form - hình thức html cgi python
CGI (là viết tắt của Common Gateway Interface) là một tập hợp các chuẩn mà định nghĩa cách thông tin được trao đổi giữa Web Server và một Custom Script. Phiên bản CGI hiện tại là CGI/1.1. Show
Trước khi tiến hành lập trình CGI, bạn đảm bảo rằng Web Server của bạn hỗ trợ CGI và được cấu hình để xử lý các chương trình CGICấu hình Web ServerTất cả chương trình CGI được thực thi bởi HTTP đều được giữ trong một thư mục đã được cấu hình trước. Thư mục này được gọi là CGI Directory và theo qui ước nó được đặt tên dạng /var/www/cgi-bin. Các CGI file có đuôi là .cgi, nhưng bạn cũng có thể giữ các file trong .py. Theo mặc định, Linux Server được cấu hình để chạy các script trong thư mục cgi-bin trong /var/www. Nếu bạn muốn xác định bất kỳ thư mục nào khác để chạy CGI script của bạn, thì bạn comment các dòng sau trong httpd.conf file:
Chương trình CGI đầu tiênDưới đây là một CGI script có tên là hello.py, được giữ trong thư mục /var/www/cgi-bin. Trước khi chạy, bạn cần thay đổi mode của file này bởi sử dụng chmod 755 hello.py để làm file này có thể thực thi.
Kết quả là:
Đây là một Python script đơn giản để viết kết quả trên STDOUT chuẩn là màn hình. Dòng Content-type:text/html\r\n\r\n được gửi trở lại trình duyệt và nó xác định kiểu nội dung để được hiển thị trên màn hình trình duyệt.Content-type:text/html\r\n\r\n được gửi trở lại trình duyệt và nó xác định kiểu nội dung để được hiển thị trên màn hình trình duyệt. HTTP HeaderDòng Content-type:text/html\r\n\r\n là một phần của HTTP Header mà được gửi tới trình duyệt để giúp trình duyệt hiểu nội dung cần được hiển thị. Tất cả HTTP Header sẽ là trong form sau:Content-type:text/html\r\n\r\n là một phần của HTTP Header mà được gửi tới trình duyệt để giúp trình duyệt hiểu nội dung cần được hiển thị. Tất cả HTTP Header sẽ là trong form sau:
Dưới đây là một số HTTP Header quan trọng khác mà bạn sẽ sử dụng thường xuyên trong lập trình CGI:
Các biến môi trường của CGITất cả chương trình CGI có quyền truy cập tới các biến môi trường sau. Các biến này đóng một vai trò quan trọng trong khi viết bất cứ chương trình CGI nào.
Path cho CGI script
QUERY_STRINGThô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 mà tạo yêu cầu. Biến này hữu ích cho log và xác nhận 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ỉ IPREQUEST_METHOD /cgi-bin/hello_get.py?first_name=HOANG&last_name=NGUYEN Dưới đây là hello_get.py để xử lý đầu vào đã được cung cấp bởi trình duyệt web. Chúng ta đang sử dụng cgi Module giúp cho việc truy cập thông tin đã truyền được dễ dàng hơn.cgi Module giúp cho việc truy cập thông tin đã truyền được dễ dàng hơn.
Phương thức GET: Ví dụ FORM đơn giảnVí dụ sau sẽ truyền hai giá trị bởi sử dụng HTML form và nút submit. Chúng ta sử dụng hello_get.py giống như trên để xử lý đầu vào này.
Truyền thông tin bởi sử dụng phương thức POSTMột phương thức đáng tin cậy hơn để truyền thông tin tới một chương trình CGI là phương thức POST. Phương thức này đóng gói thông tin theo đúng như cách của phương thức GET, nhưng thay vì gửi nó dưới dạng một chuỗi text sau một dấu ? trong URL, thì nó gửi dưới dạng một thông điệp riêng rẽ. Thông điệp này vào trong CGI script trong dạng đầu vào chuẩn. Ví dụ sau cũng sử dụng hello_get.py ở trên.
Sử dụng lại ví dụ trên để truyền hai giá trị bởi sử dụng HTML form và nút submit.
Truyền Checkbox tới chương trình CGIHTML code sau là cho một form với hai checkbox: 0Dưới đây là checkbox.cgi để xử lý đầu vào được cung cấp bởi trình duyệt web: 1Truyền RadioButton tới chương trình CGIHTML code sau cho một form với hai Radiobutton: 2Và đây là radiobutton.py để xử lý đầu vào được cung cấp bởi trình duyệt web: 3Ví dụ File UploadĐể upload một file, HTML form phải có thuộc tính enctype được thiết lập thành multipart/form-data.multipart/form-data. 4Dưới đây là save_file.py để xử lý file upload: 5Sử dụng CookieCookie là bản ghi dữ liệu thuần text của 5 trường biến sau:
Thiết lập cookieĐể gửi cookie tới trình duyệt là khá dễ dàng. Các cookie này được gửi cùng với HTTP Header, ở trước trường Content-type. Giả sử bạn muốn thiết lập UserID và Password là các cookie, thì việc này được thực hiện như sau: 6Qua ví dụ trên, bạn có thể thấy rằng chúng ta đã sử dụng trường Set-Cookie để thiết lập các cookie. Việc thiết lập các thuộc tính của cookie như Expires, Domain, Path là tùy ý. Bạn cần chú ý là các cookie được thiết lập trước khi gửi trường "Content-type:text/html\r\n\r\n.Set-Cookie để thiết lập các cookie. Việc thiết lập các thuộc tính của cookie như Expires, Domain, Path là tùy ý. Bạn cần chú ý là các cookie được thiết lập trước khi gửi trường "Content-type:text/html\r\n\r\n. Thu nhận CookieĐể thu nhận tất cả các Cookie đã thiết lập là khá dễ dàng. Các cookie được lưu trữ trong biến môi trường HTTP_COOKIE của CGI và có dạng sau: 7Dưới đây là ví dụ đơn giản minh họa cách thu nhận các cookie: 8 |