一、基本概念
CGI,全稱 Common Gateway Interface,是指“公共網關接口”,是Web服務器與應用程序或腳本進行通信的標準協議。Python提供的CGI模塊支持運行在服務器上的Python腳本與Web前端進行交互。
我們在Web頁面上填寫表單數據並提交時,Web服務器會接收到瀏覽器發送的請求,並將請求轉發給Python腳本進行處理。Python腳本接收到請求後,可以對接收到的數據進行處理,並將結果返回給Web服務器,最終Web服務器將結果返回給瀏覽器。也就是說,Python CGI 是Web服務器和Python腳本之間的橋樑。
二、CGI編寫流程
為了使用Python CGI來處理表單數據,我們需要按照以下步驟進行:
1.在Web服務器上配置CGI支持,一般來說,我們需要在網站根目錄下創建一個cgi-bin目錄,將Python腳本存放在裡面。
2.在HTML表單中設置表單屬性,如action、method和enctype等。其中,action指定表單提交的地址為Python腳本,method指定提交方式為post。
<form action="/cgi-bin/formhandler.py" method="post">
3.在Python腳本中獲取並處理表單數據。通過CGI模塊提供的函數,我們可以很方便地獲取表單數據。
import cgi
form = cgi.FieldStorage()
username = form.getvalue('username')
password = form.getvalue('password')
4.在Python腳本中輸出處理結果。Python腳本可以使用print語句或標準輸出流將處理結果返回給Web服務器,最終Web服務器將結果返回給瀏覽器。
print("Content-Type: text/html")
print()
print("<html><body>")
print("<h1>Hello %s</h1>" % username)
print("<p>Your password is %s</p>" % password)
print("</body></html>")
三、實例演示
下面是一個簡單的表單處理示例:我們將用戶名和密碼通過表單提交給Python CGI腳本,並將處理結果返回給Web頁面。
form.html:
<html>
<body>
<form action="/cgi-bin/formhandler.py" method="post">
<p>Username:<input type="text" name="username"></p>
<p>Password:<input type="password" name="password"></p>
<p><input type="submit" value="Submit"></p>
</form>
</body>
</html>
formhandler.py:
#!/usr/bin/env python
import cgi
# 獲取表單數據
form = cgi.FieldStorage()
username = form.getvalue('username')
password = form.getvalue('password')
# 輸出處理結果
print("Content-Type: text/html")
print()
print("<html><body>")
if username and password:
print("<h1>Hello %s</h1>" % username)
print("<p>Your password is %s</p>" % password)
else:
print("<p>Please enter username and password.</p>")
print("</body></html>")
四、注意事項
1. 盡量使用post方法提交表單,因為get方法將數據作為URL參數傳遞,存在安全隱患。
2. 對於輸入數據,盡量使用正則表達式進行過濾和校驗,以避免安全漏洞。
3. 在輸出數據時,一定要注意對特殊字符進行轉義,以防止XSS攻擊。
4. Python CGI通常用於處理較小量的數據,處理大數據量的數據時,建議使用其他技術,如Django、Flask等。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/245242.html