Hi,
wie kann ich in Python mit Sessions arbeiten? Ich habe bisher nur die pyweblib gefunden, bekomme das aber nicht zum laufen. Kann mir jemand nen Tip geben wie ich das zum Laufen bekomme? Oder kennt jemand was anderes?
Wäre dankbar wenn mir da jemand weiterhelfen könnte
gruß
burli
Sessions
-
- User
- Beiträge: 52
- Registriert: Montag 19. Januar 2004, 22:19
- Wohnort: Vor meinem Computer
- Kontaktdaten:
Hmmmm
das ist schlecht ich hätte dir sonst spyce vorgeschlagen
und sonst heisst es selber schreiben
hab mir mal sowas auch geschrieben aber nie zu ende gebracht und getestet (halt so aus langerweile geschrieben
) wenn interesse besteht musste mal fragen 
das ist schlecht ich hätte dir sonst spyce vorgeschlagen
und sonst heisst es selber schreiben



-
- User
- Beiträge: 52
- Registriert: Montag 19. Januar 2004, 22:19
- Wohnort: Vor meinem Computer
- Kontaktdaten:
ist mir nicht bekannt...
leider oder kommentare, hab ich halt für mcih geschrieben 
und ich hab versucht mich an die PHP funktions namen anzulehnen
Code: Alles auswählen
import md5
import time
import string
import os
from exceptions import Exception
from random import randrange
class session_not_exist(Exception):
def __init__(self, msg = "Session isn't started. Start Session and retry"):
self.errno = 1001
self.errmsg = msg
class session_unknown_key(Exception):
def __init__(self, msg):
self.errno = 1002
self.errmsg = msg
class session_unknown_type(Exception):
def __init__(self, msg):
self.errno = 1003
self.errmsg = msg
class session_not_started(Exception):
def __init__(self, msg = "Session isn't started. Start Session and retry"):
self.errno = 1004
self.errmsg = msg
class session_is_running(Exception):
def __init__(self, msg = "Session is running, stop the session and retry"):
self.errno = 1005
self.errmsg = msg
class session:
def __init__(self, save_path = './tmp'):
self._save_path = save_path
self._values = {}
self._session_id = None
def save_path(self, path = None):
if path:
if self._session_id:
raise session_is_running()
self._save_path = path
return self._save_path
def start(self, session_id = None):
if not session_id:
while 1:
session_id = md5.new(randrange(stop = time.time())).digest()
if not self._exist_session(session_id):
break
elif not self._exist_session(session_id):
raise session_not_exist("Unknown Session ID")
self._session_id = session_id
try:
self._fp = open('sess_'+self.session_id,'rw')
except(IOError, e):
raise e
while 1:
lines = self._fp.readlines(8*1024)
if not lines:
break
for oneline in lines:
self._encode(oneline)
return self._session_id
def session_id(self):
if self._session_id:
raise session_not_started()
return self._session_id
def register(self, key, value = None):
if self._session_id:
raise session_not_started()
self._values[key] = value
def is_registered(self, key):
if self._session_id:
raise session_not_started()
if self._values.has_key(key):
return True
return False
def unregister(self, key):
if self._session_id:
raise session_not_started()
del self._values[key]
def unset(self):
if self._session_id:
raise session_not_started()
self._values = {}
def set(self, key, value):
if self._session_id:
raise session_not_started()
if self._values.has_key(key):
self._values[key] = value
else:
raise session_unknown_key("Unknown Key: "+str(var))
def get(self, key):
if self._session_id:
raise session_not_started()
return self._values.get(key, None)
def destroy(self):
if self._session_id:
raise session_not_started()
try:
os.remove(self._save_path+'/sess_'+self._session_id)
except (OSError, e):
raise e
self._session_id = None
def stop(self):
if self._session_id:
raise session_not_started()
try:
self._fp.write(self._decode())
except IOError, e:
raise e
close(self._fp)
########################## Private Funktions #######################
def _encode(self, line):
splitline = string.split(line, ';')
for split in splitline:
var, option = string.split(split, '|')
option = string.split(option, ':')
if option[0] == 's':
value = string.split(option[-1], '"')
self._values[var] = str(value)
elif option[0] == 'i':
self._values[var] = int(option[1])
elif option[0] == 'f':
self._values[var] = float(option[1])
def _decode(self):
line = ''
for key in self._values.keys():
if type(self._values[key]) is str:
line += ('%s|s:%d:"%s";')%(key, len(self._values[key]), self._values[key])
elif type(self._values[key]) is int:
line += ('%s|i:%d;')%(key, self._values[key])
elif type(self._values[key]) is float:
line += ('%s|f:%f;')%(key, self._values[key])
else:
raise session_unknown_type("Unknown type at key: " + str(key) + ", Type: " + type(self._values[key]))
def _exist_session(session_id):
return os.path.exists(self._save_path+'/sess_'+session_id)

und ich hab versucht mich an die PHP funktions namen anzulehnen
-
- User
- Beiträge: 52
- Registriert: Montag 19. Januar 2004, 22:19
- Wohnort: Vor meinem Computer
- Kontaktdaten:
das ja das problem ich weiss nicht ob es funzt
aber synatax fehler sollte kein drin das doch schonmal gut
und man muss die sessions noch von hand löschen also sowas wie nen carbage collector hab ich nicht drin aber ist auch nicht das problem das hinzufügen

