Hallo Leute,
ich habe eine Klasse um die Sessions in der Datenbank abzuspeichern.
Leider bekomme ich eine Fehlermeldung, die ich mir nicht erklären kann.
Das Verzeichnis ist vorhanden und hat auch die nötigen Schreibrechte.
Wenn ich ohne diese Klasse arbeite, dann werden die Sessions, so wie es sein sollte, in den Ordner geschrieben.
Ich denke mal dieser Fehler ist auch dafür verantwortlich, das die Session (bzw. die Variablen darin) verloren geht, wenn ich eine neue Seite aufrufe.
Ich bin leider ratlos und hoffe darauf das jemand einen Fehler findet, den ich übersehe.
Anbei mal die komplette Klasse. Vielen Dank!
UPDATE:
Der check query in der Funktion _write bringt mir ebenfalls einen SQL Fehler, ich glaube das wird das Problem sein.
"No database selected".
Die Verbindung zur Datenbank steht aber definitiv. Wenn ich im __Construct zum Test ein Query ausführe, dann klappt das.....
ich habe eine Klasse um die Sessions in der Datenbank abzuspeichern.
Leider bekomme ich eine Fehlermeldung, die ich mir nicht erklären kann.
Warning: Unknown: Failed to write session data (user). Please verify that the current setting of session.save_path is correct (D:\SERVER\tmp) in Unknown on line 0
Das Verzeichnis ist vorhanden und hat auch die nötigen Schreibrechte.
Wenn ich ohne diese Klasse arbeite, dann werden die Sessions, so wie es sein sollte, in den Ordner geschrieben.
Ich denke mal dieser Fehler ist auch dafür verantwortlich, das die Session (bzw. die Variablen darin) verloren geht, wenn ich eine neue Seite aufrufe.
Ich bin leider ratlos und hoffe darauf das jemand einen Fehler findet, den ich übersehe.
Anbei mal die komplette Klasse. Vielen Dank!
UPDATE:
Der check query in der Funktion _write bringt mir ebenfalls einen SQL Fehler, ich glaube das wird das Problem sein.
"No database selected".
Die Verbindung zur Datenbank steht aber definitiv. Wenn ich im __Construct zum Test ein Query ausführe, dann klappt das.....
PHP:
class SessionHandler{
public function __construct(){
session_set_save_handler(array(&$this, '_open'), array(&$this, '_close'), array(&$this, '_read'), array(&$this, '_write'), array(&$this, '_destroy'), array(&$this, '_gc'));
register_shutdown_function('session_write_close');
session_start();
}
public function _open($save_path, $session_name){
return true;
}
public function _close(){
return true;
}
public function _read($id){
$query = SQL::Query("SELECT value FROM sessions WHERE id = '" . mysql_real_escape_string($id) . "' LIMIT 1");
if(SQL::NumRows($query) > 0){
$erg = SQL::FetchArray($query);
return $erg['value'];
}
return '';
}
public function _write($id, $sess_data){
$check = SQL::Query("SELECT id FROM sessions WHERE id = '" . $id . "'");
if(SQL::FetchArray($check) > 0){
$query = SQL::Query("UPDATE sessions SET last_updated ='" . mysql_real_escape_string(time()) . "', value = '" . mysql_real_escape_string($sess_data) . "' WHERE id = '" . $id . "'");
}else{
$query = SQL::Query("INSERT INTO sessions (id, last_updated, start, value) VALUES ('" . mysql_real_escape_string($id) . "', '" . mysql_real_escape_string(time()) . "', '" . mysql_real_escape_string(time()) . "', '" . mysql_real_escape_string($sess_data) . "')");
}
return mysql_affected_rows();
}
public function _destroy($id){
$query = SQL::Query("DELETE FROM sessions WHERE id = '" . mysql_real_escape_string($id) . "'");
$_SESSION = array();
return mysql_affected_rows();
}
public function _gc($maxlifetime) {
$maxlifetime = strtotime("-20 minutes");
$query = SQL::Query("DELETE FROM sessions WHERE last_updated < '" . $maxlifetime . "'");
return mysql_affected_rows();
}
}
Zuletzt bearbeitet: