<p>你能提供比“我不知道问题出在哪里”更详细的信息吗?具体发生了什么,如果有一些日志消息,你会收到什么消息。在</p>
<p>您是否尝试在调用“validate”函数定义之前移动它?我想这可能是你问题的一部分。在</p>
<hr/>
<p>更新:经过一些调查和一些修复,我得到了它的工作:</p>
<ol>
<li>如前所述,“validate”函数定义应该在调用之前设置</li>
<li>您的sql查询不正确,因为“SELECT*FROM login”将返回3个字段(id、username和passwrd),因此您应该将其更改为“SELECT username,passwrd FROM login”</li>
<li>sqlite返回的记录是一个元组,您试图将其与列表兼容,因此存在类型不匹配。一个解决方案if改为:“if list(record)==UserPW:”</li>
</ol>
<p>另外,在ubuntu下查看/var/log/apache2/错误.log帮助很大。在</p>
<p>最终导致:</p>
<pre><code>#!/usr/bin/env python
import cgi;
import cgitb;
import Cookie;
import os;
import sqlite3;
#open connection
conn= sqlite3.connect("manager.db")
cur= conn.cursor()
username= None
form= cgi.FieldStorage()
def validate(UserPW):
sql= "SELECT username,passwrd FROM login;"
cur.execute(sql)
userPWDatabase=cur.fetchall()
for record in userPWDatabase:
if list(record) == UserPW:
#Create cookie
C= Cookie.SimpleCookie()
#take the value of the index.py form variable username
username= form.getvalue('usernameLogin')
#set the cookie with the usernameLogin key
C['usernameLogin']= username
print C
return 1
else:
return 0
UserPW= [form.getvalue('usernameLogin'), form.getvalue('passwordLogin')]
isValidate = validate(UserPW);
if isValidate == 1:
print "Content-type: text/html\n\n"
print """
<html>
<head> Redirecting </head>
<body>
<form method= POST action="http://localhost:8000/cgi-bin/page1.py">
<p> Validated! <input type="submit" value="Enter"/> </p>
</form>
</body>
</html> """
elif isValidate == 0:
print "Content-type: text/html\n\n"
print """
<html>
<head> Redirecting </head>
<body>
<form method=POST action= "http://localhost:8000/cgi-bin/index.py">
<p> Username or Password incorrect! <input type="submit" value="Go back"/> </p>
</form>
</body>
</html>
"""
</code></pre>