簡體   English   中英

使用Python的CGI

[英]CGI with Python

我開始在Python中使用CGI。

運行以下代碼后:

#!c:\python34\python.exe

import cgi


print("Content-type: text/html\n\n") #important


def getData():
    formData = cgi.FieldStorage()
    InputUN = formData.getvalue('username')
    InputPC = formData.getvalue('passcode')
    TF = open("TempFile.txt", "w")
    TF.write(InputUN)
    TF.write(InputPC)
    TF.close()

if __name__ =="__main__":
    LoginInput = getData()
    print("cgi worked")

發生以下錯誤:

Traceback (most recent call last):
  File "C:\xampp\htdocs\actual\loginvalues.cgi", line 21, in <module>
    LoginInput = getData()
  File "C:\xampp\htdocs\actual\loginvalues.cgi", line 16, in getData
    TF.write(InputUN)
TypeError: must be str, not None
>>> 

我正在嘗試將以html輸入的值寫入文本文件。

任何幫助,將不勝感激 :)

您對getValue()調用返回None ,這意味着表單要么不包含它們,要么將它們設置為空字符串,要么僅按名稱設置。 Python的CGI模塊會忽略未設置為非null字符串的輸入。

適用於Python CGI:

  • mysite.com/loginvalues.cgi?username=myname&pass=mypass

不適用於Python CGI:

  • mysite.com/loginvalues.cgi?username=&pass= (空值)
  • mysite.com/loginvalues.cgi?username&pass需要=部分。)

為此,請為缺少表單元素的情況引入默認值,或手動處理None情況:

TF.write('anonymous' if InputUN is None else InputUN)
TF.write('password' if InputPC is None else InputUN)

請注意,密碼和其他私人登錄憑據絕對不能在URL中使用。 URL未加密 即使在HTTPS中,URL也以純文本發送,您和您的用戶之間的網絡上的任何人都可以閱讀。

URL唯一的加密是通過隧道SSH端口或加密的VPN,但是您無法控制它,因此永遠不要對其進行依賴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM