繁体   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