前几天我在堆栈溢出中看到如何使用函数重定向.. 但它不在这里工作
#!/Python27/python
import cgi
import cgitb ; cgitb.enable()
import MySQLdb
from datetime import datetime
f= cgi.FieldStorage()
l=f["roll"].value
def redirect(url):
print "Content-Type: text/plain"
print "Refresh: 0; url='%s'" % url
print
print "Redirecting..."
Con = MySQLdb.Connect(host="127.0.0.1", port=3306, user="root", passwd="jesus", db="student")
cursor = Con.cursor()
sql="SELECT YEAR FROM STDDET WHERE id='%s'"%(l)
cursor.execute(sql)
data=cursor.fetchone()
cyear=datetime.now().year
cmonth=datetime.now().month
data=data[0]
data=int(data)
year=cyear-data
print year
if(year==3):
redirect("intro.html")
elif(year==4):
redirect("yea4.html")
即使if条件满足也没有被重定向...我收到错误标题错误... plz help !!
答案 0 :(得分:0)
据我所知,您的脚本会产生以下响应:
Content-Type: text/plain Refresh: 0; url='x.y.com'
Redirecting...
这不是有效的http响应,因为缺少status line。
如果您生成“有效”页面,则应回复状态
HTTP/1.1 302 Found
如果您要重定向,更好的办法是回复3xx代码之一。举个例子:
HTTP/1.1 302 Found
Location: http://www.google.fr/
HTTP/1.1 ...
行必须是标题的第一行。所以它应该由程序的第一个print
生成。有关示例,请参阅Python CGI returning an http status code, such as 403?。