Horido und schönen guten Abend,
...tja, jetzt sitze ich hier seit knapp 3 Std. und bin scheinbar nicht in der Lage einen einfachen Fehler zu finden. =( Und zwar gehts um folgendes:
Ich schreibe gerade einen Session-Handler um Sessions in der DB zu speichern. Nun gut, jetzt habe ich soweit alles fertig (keine große Sache wenn man Google nutzt :p), und muss bedauerlicherweise feststellen, dass mir die Funktion "session_decode()" seltsamer weise die Werte nicht dokodiert und in der gestarteten Session zur verfügung stellt... Die Funktion zum Auslesen der Daten wird auch erreicht und die Zeile mit "session_decode()" auch ausgeführt, aber will ich jetzt in einem Script die Variable verwenden, bekomme ich den Fehler "undefined index:" und anschließend sind auch in der DB im Feld der Session-Vars die Daten verschwunden... !?! *grübel*
Wäre super wenn mir jemand von euch ein Wink mit dem Zaunpfahl geben könnte...
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74: | function _session_open($save_path, $session_name) {
global $user_ip;
global $vcmsConfig_session_lifetime;
$sid = session_id();
$sid = strip_tags($sid);
$sql = "SELECT session_ip, session_expiry FROM cms_sys_session WHERE session_key = '$sid'";
$rs = mysql_query($sql);
if(mysql_num_rows($rs) == 0) {
// Wir haben noch keine Session in der DB --> neue Session in DB schreiben
$expiry = time() + $vcmsConfig_session_lifetime;
$sql = "INSERT INTO cms_sys_session (session_key, session_ip, session_expiry) VALUES ('$sid', '$user_ip', '$expiry')";
}
else {
// Wir haben die Session in der DB gefunden --> IP und Zeitmarke prüfen
$session_data = mysql_fetch_array($rs);
if($user_ip != $session_data['session_ip']) {
die("IP-Validation ERROR ! This is not your Session-ID!!!");
}
if($session_data['session_expiry'] < time()) {
die("EXPIRY-Validation ERROR! This Session-ID is out of time!!!");
}
// Zeitstempel und weiter
$sql = "UPDATE cms_sys_session SET session_timestamp = NOW() WHERE session_key = '$sid'";
}
$rs = mysql_query($sql);
return $rs;
}
function _session_read($sid) {
$sql = "SELECT session_vars FROM cms_sys_session WHERE session_key = '$sid'";
$rs = mysql_query($sql);
$vars = mysql_fetch_array($rs);
if(is_array($vars)) {
session_decode($vars['session_vars']);
return true;
}
else {
return false;
}
}
function _session_write($sid, $vars)
{
$check_query = "SELECT COUNT(*) FROM cms_sys_session WHERE session_key = '$sid'";
$check = mysql_query($check_query);
if($check > 0) {
$sql = "UPDATE cms_sys_session SET session_vars = '$vars' WHERE session_key = '$sid'";
$rs = mysql_query($sql);
return $rs;
}
return false;
}
function _session_destroy($sid) {
$sql = "DELETE FROM cms_sys_session WHERE session_key = '$sid'";
$rs = mysql_query($sql);
return $rs;
}
function _session_close() {
return true;
}
function _session_gc($maxlifetime) {
$sql = "DELETE FROM cms_sys_session WHERE session_expiry < '".time()."'";
$rs = mysql_query($sql);
return $rs;
}
session_set_save_handler('_session_open', '_session_close', '_session_read', '_session_write', '_session_destroy', '_session_gc'); |
Schon mal vielen Dank im voraus. Denke es wird irgendein trivialer Fehler sein den ich scheinbar übersehen habe...