Seite 1 von 1

Cookie setzen

Verfasst: Mittwoch 29. Oktober 2003, 20:40
von XT@ngel
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

Verfasst: Mittwoch 29. Oktober 2003, 20:54
von Milan
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.

Verfasst: Mittwoch 29. Oktober 2003, 21:16
von XT@ngel
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]

Verfasst: Mittwoch 29. Oktober 2003, 21:24
von XT@ngel
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

Verfasst: Mittwoch 29. Oktober 2003, 22:00
von Milan
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: