WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Problem mit session_decode() » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Die letzten 5 Postings in diesem Thema » Alle anzeigen
von GeneticMaster
Ok, ich hab jetzt mal versucht etwas zu debuggen und musste feststellen, dass er mir die Session-Daten nur dann decodiert, wenn ich später expliziet die Funktion "_session_read($sid)" mit entsprechender ID aufrufe... Oo

Allerdings sollte das doch automatisch funktionieren, so wie bei den anderen Funktionen auch... Man, ich verzweifel gleich!?! *heul*
von GeneticMaster
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 !<br /><b>This is not your Session-ID!!!</b>");
		}
		if($session_data['session_expiry'] < time()) {
			die("EXPIRY-Validation ERROR!<br /><b>This Session-ID is out of time!!!</b>");
		}
		
		// 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...

Nach oben