cookie geht verloren

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
dracana
User
Beiträge: 22
Registriert: Donnerstag 11. Oktober 2007, 10:49

Hey,

für meine homepage schreibe ich im moment ein "login-bereich". Die Benutzer sind in einer Datenbank gespeichert und das einloggen funktioniert auch. Aber sobald man die Seite neu läd oder auf eine andere Seite der homepage geht, ist man nichtmehr eingeloggt. Dieses Problem wollte ich durch cookies beheben, aber irgendwie gehen die immer verloren.

Meine Frage: wie erstelle ich ein dauerhaftes Cookie, das solange nicht verschwindet wie der browser geöffnet ist.

ausschnitt, der die cookiearbeit übernimmt:

Code: Alles auswählen

cgivar = cgi.FieldStorage() # daten die vom html-formular überliefert wurden
name = cgivar.getvalue('name')
passwort = cgivar.getvalue('passw')


try:
   c.load(os.environ['HTTP_COOKIE'])
   name = c['Name'].value
   passwort = c['Passwort'].value
except:
   c = Cookie.SimpleCookie()
   c['Name'] = name
   c['Passwort'] = passwort 
mit "Expires" kann man ja die dauer des cookies bestimmen, aber selbst, wenn man das auf 120 sekunden stellt, ist man nichtmehr eingeloggt, sobald man die seite neu läd.

ich habe dieses forum jetzt ca 45 minuten durchsucht, bin aber leider nicht fündig geworden, wie man dies beheben könnte, oder geht das ganze nur mit session id's ?

Gruß Thorsten
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Willst du wirklich so lowlevel bleiben und nicht eine Library wie http://werkzeug.pocoo.org verwenden? Würde die ganze Sache etwas vereinfachen ;)
dracana
User
Beiträge: 22
Registriert: Donnerstag 11. Oktober 2007, 10:49

naja module wie werkzeug und django sind ziemlich umfangreich und mächtig. Für ein größeres Projekt würde ich die durchaus nutzen, aber es geht hier lediglich um ein login, andem sich 3-4 personen einloggen können.

Achja das fällt mir jetzt gerade erst ein, was passiert wenn sich einer einloggt, wenn ein anderer schon eingeloggt ist :S sollte man jetzt vielleicht doch ein framework nehmen oder kann man das noch mit cgi handhaben?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo Thorsten!

Wenn du mit dem Apache arbeitest, dann kannst du die Sache mit dem Einloggen, dem Apachen überlassen. Über eine ".htaccess"- und eine ".htpasswd"-Datei kannst du genau festlegen, wer im dadurch geschützten Ordner sein darf, und wer nicht.

- http://tools.dynamicdrive.com/password/
- http://httpd.apache.org/docs/2.2/howto/htaccess.html
- http://httpd.apache.org/docs/2.2/howto/auth.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

dracana hat geschrieben:naja module wie werkzeug und django sind ziemlich umfangreich und mächtig. Für ein größeres Projekt würde ich die durchaus nutzen, aber es geht hier lediglich um ein login, andem sich 3-4 personen einloggen können.
Werkzeug ist eine Library und kein Framework und besteht ca (der core) aus 15 (von denen dich die meisten nicht interessieren werden) Dateien, was ich nicht grad als groß bezeichnen würde. Und ja ich erschlage selbst 3-4 Personenprojekte mit Django, da ich dank dem Admin oft schon so viel Zeit spare, dass es gar nicht wert ist was anderes zu verwenden…
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also ich nutze Werkzeug auch für ganz triviale Sachen. Vor allem so Zeug dass nicht größer als 1 Datei werden soll, aber trotzdem WSGI nutzen soll, weil das für mich *immer* ein Vorteil ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Alternativ könnte man auch bottle empfehlen :-) Ist minimalistischer als Werkzeug, wenn das denn eine Rolle spielt.
Antworten