Python cookie未保存或CGI脚本无法访问

Python cookie未保存或CGI脚本无法访问,python,cookies,cgi,Python,Cookies,Cgi,我认为这将有一个明显的答案。。。我一直在研究Python中的一系列cookie示例,并总结出呈现事物的正确顺序是:获取cookie(如果存在)、设置cookie数据、打印内容类型标题、输出cookie,然后打印其他所有内容。我已经建立了这个小部分,我不知道是什么使这个版本不工作。它确实创建了一个cookie(据我在Firefox/Chrome中所见,它有一个数字字符串),但它似乎没有创建UID,因此当另一个脚本尝试使用UID时,它会创建一个错误 这里是它的要点,跳过导入(似乎都没问题)、数据库连

我认为这将有一个明显的答案。。。我一直在研究Python中的一系列cookie示例,并总结出呈现事物的正确顺序是:获取cookie(如果存在)、设置cookie数据、打印内容类型标题、输出cookie,然后打印其他所有内容。我已经建立了这个小部分,我不知道是什么使这个版本不工作。它确实创建了一个cookie(据我在Firefox/Chrome中所见,它有一个数字字符串),但它似乎没有创建UID,因此当另一个脚本尝试使用UID时,它会创建一个错误

这里是它的要点,跳过导入(似乎都没问题)、数据库连接器等:

c = Cookie.SimpleCookie(os.environ.get("HTTP_COOKIE"))
mode = "first"
when = c.get("lastvisit")

if when is None: 
    if form.has_key("username") and form.has_key("passwd"):
        username = form['username'].value
        cursor.execute('SELECT passwd, uid FROM user WHERE username="%s"' % (username))
        person = cursor.fetchall()[0] 
        check = person[0]
        if check == md5.new(form['passwd'].value).hexdigest():
            c = Cookie.SimpleCookie()
            c["lastvisit"] = str(time.time())
            c["uid"] = person[1]
            mode = "redirect"
        else: # reload login page with error message
            mode = "tryagain"
    else: # go to first login form
        mode = "first"
else: # was already logged in
    mode = "redirect"

if mode == "redirect":
    print("Location:http://somewhere.com\nContent-Type: text/html\n\n")
else:
    print("Content-Type: text/html")
    print c.output()
    print("\n\n")
    if mode == "first":
        print("<h2>Please log in</h2>")
    elif mode == "tryagain":
        print("<h2>Please try again</h2>")
    print('<form method=POST action="self.cgi">Username: <input type=textarea name="username">Password: <input type=password name="passwd"><input type=submit value="Submit">')

在这里(或者在同一目录中的另一个脚本中,这是我真正想要做的),uid返回为None。

我想你只是眼睛疲劳了。您正在创建cookie对象,然后运行
“重定向”
codepath,它不会设置cookie。

谢谢,就是这样!我在另一个文件中仍然有一个问题,但它是另一个代码段,因此我想我将提出一个新问题。
c = Cookie.SimpleCookie(os.environ.get("HTTP_COOKIE"))
uid = c.get("uid")