Cookie setzen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
XT@ngel
User
Beiträge: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Hi,
Ich versuche hier gerade einen Cookie zu setzen.
Hier mal der Code

Code: Alles auswählen

class Main:
   def __init__(self, DBObj):
      self.DBObj = DBObj
      self.LOGIN = Cookie.SmartCookie()
      try:
         self.LOGIN.load(os.environ["HTTP_COOKIE"])
         self.LOGIN_OK = self.LOGIN["pybb"].value
      except:
         self.LOGIN_OK = "NULL"

   def Login(self, username, password):
      if self.DBObj.CheckUser(username, password):
         if  self.LOGIN_OK == "NULL":
            try:
               self.LOGIN["pybb"] = "TEST"
               self.LOGIN["pybb"]["expires"] = 360
               self.LOGIN["pybb"]["path"] = "/"
               return 1
            except:
               return 0

Aufrufen tu ich das so:

Code: Alles auswählen

DBObj = MySQLLayer.MySQL()       # DB Obj.
FORM  = cgi.FieldStorage()             # Form Daten
BOARD = PyBoard.Main(DBObj)            # Board Obj

if BOARD.Login(FORM["username"].value, FORM["password"].value):
         BOARD.PrintHTMLHead()
Wenn ich das ganze ausserhalb eines Obj. versuche funktioniert es.
Aber wieso nicht in der Klasse?

MfG und Danke
Andreas
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Du machst zwei Fehler:

wenn noch kein Cookie gesetzt wurde, überschreibst du das Cookie-Obj. mit self.LOGIN_OK = "NULL". Dadurch kannst du auch keine Werte mehr zuweisen, es gibt eine exception und deine nicht näher definierte except Klausel greift und returned 0

Code: Alles auswählen

      try:
        self.LOGIN["pybb"] = "TEST"
        self.LOGIN["pybb"]["expires"] = 360
        self.LOGIN["pybb"]["path"] = "/"
        return 1
      except:
        return 0
aber selbst, wenn du das nicht machst, setzt du den Cookie danach nicht mit print self.LOGIN in der Klasse.
XT@ngel
User
Beiträge: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Milan hat geschrieben:Du machst zwei Fehler:
wenn noch kein Cookie gesetzt wurde, überschreibst du das Cookie-Obj. mit self.LOGIN_OK = "NULL"
Verstehe ich nicht? self.LOGIN ist doch mein Cookie Obj.
self.LOGIN_OK soll später nur den Inhalt des Cookie bekommen.
Also ist es doch richtig, das wenn ich keinen Wert auslesen kann, das ich self.LOGIN_OK den Wert NULL zuweisen.
aber selbst, wenn du das nicht machst, setzt du den Cookie danach nicht mit print self.LOGIN in der Klasse.
Steh ich aufm schlauch aber wo schreibe ich print self.LOGIN

Sorry aber ich glaub ich bin übermüdet *g*

MfG
Andreas[/quote][/code]
Zuletzt geändert von XT@ngel am Mittwoch 29. Oktober 2003, 22:07, insgesamt 1-mal geändert.
XT@ngel
User
Beiträge: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Achso ? !!
Super läuft jetzt :idea:
Ich muss den Cookie mir print ausgeben,
Ich dachte der wird wie bei PHP automatisch gesendet..

Danke, Danke..

Andreas
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

XT@ngel hat geschrieben:
Milan hat geschrieben:Du machst zwei Fehler:
wenn noch kein Cookie gesetzt wurde, überschreibst du das Cookie-Obj. mit self.LOGIN_OK = "NULL"
Verstehe ich nicht? self.LOGIN ist doch mein Cookie Obj.
self.LOGIN_OK soll später nur den Inhalt des Cookie bekommen.
Also ist es doch richtig, das wenn ich keinen Wert auslesen kann, das ich self.LOGIN_OK den Wert NULL zuweise.
Hatte ganz das _OK übersehen... :roll: Naja, oft hilft auch ein Blick in die Doku, da gibts genug Beispiele zu :wink:
Antworten