Файл cookie Python либо не сохранен, либо как-то недоступен для CGI-скрипта - PullRequest
0 голосов
/ 15 декабря 2010

Я думаю, что это даст очевидный ответ ... Я смотрел на кучу примеров файлов cookie в Python и понял, что правильный порядок представления вещей: получить 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">')

Если я попытаюсь сделать

c = Cookie.SimpleCookie(os.environ.get("HTTP_COOKIE"))
uid = c.get("uid")

здесь (или в другом скрипте в том же каталоге, что я и хочу сделать), uid возвращается как None.

1 Ответ

0 голосов
/ 15 декабря 2010

Я думаю, у тебя просто уставшие глаза. Вы создаете объект cookie, а затем запускаете код "redirect", который не устанавливает cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...