Hallo liebes Forum,
ich programmiere zurzeit eine kleine Webseite mit einem Kumpel zusammen. Ich habe nun die ersten Klassen dafür geschrieben und probiere nun gerade etwas ganz neues aus (also für mich neu). Ich möchte die Session in der Datenbank speichern. Habe dafür folgende Datei:
function _open() {
require_once('core/cfg/config.cfg.php');
global $_sess_db;
if ($_sess_db = mysql_connect($config['db_host'], $config['db_username'], $config['db_password'])) {
return mysql_select_db($config['db_name'], $_sess_db);
}
return false;
}
function _close() {
global $_sess_db;
return mysql_close($_sess_db);
}
function _read($id) {
global $_sess_db;
$sql = "SELECT data FROM sessions WHERE id = '{$id}'";
if ($result = mysql_query($sql, $_sess_db)) {
if (mysql_num_rows($result)) {
$record = mysql_fetch_assoc($result);
return $record['data'];
}
}
return '';
}
function _write($id, $data) {
global $_sess_db;
$access = time();
$sql = "REPLACE INTO sessions VALUES ('{$id}', '{$access}', '{$data}')";
return mysql_query($sql, $_sess_db);
}
function _destroy($id) {
global $_sess_db;
$sql = "DELETE FROM sessions WHERE id = '{$id}'";
return mysql_query($sql, $_sess_db);
}
function _clean($max) {
global $_sess_db;
$old = time() - $max;
$sql = "DELETE FROM sessions WHERE access < '{$old}'";
return mysql_query($sql, $_sess_db);
}
Alles anzeigen
Ich habe eine Hauptklasse (statisch) in der ich alle anderen Klassen lade, wie zum Beispiel die Klasse für die Datenbankverbindung:
public static function start($startSession = true) {
if ($startSession) {
system::loadSession();
session_set_save_handler('_open','_close','_read','_write','_destroy','_clean');
session_start();
}
system::loadConfig();
system::loadDatabase();
}
Wie ihr nun aber seht, musste ich in der Session-Datei nochmals eine Verbindung aufbauen. Warum auch immer konnte ich die Datenbank-Klasse dort nicht verwenden. Hatte sie anfangs vor dem system::loadSession() eingebunden aber es hat nicht geklappt.
Naja okay das Problem was ich nun bekomme ist folgende Fehlermeldung:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'www-data'@'localhost' (using password: NO) in /www/htdocs/xxxxxx/http://xxxxxx.de/core/classes/database.class.php on line 11
Ich habe in der Doku von mysql_connect gelesen, dass es einen Parameter gibt "new_link" mit dem man eine neue Verbindung mit den selben Parametern erzwingen kann. Hat in meinem Fall leider nichts gebracht. Was anderes nützliches zu dem Thema habe ich auch nicht gefunden... Ich hoffe ihr könnt mir weiterhelfen. Ich nehme auch gerne einen Vorschlag entgegen wie ich es anders machen könnte. Vielleicht geht das ja doch irgendwie, dass ich in der Session-Funktions-Datei die Datenbankklasse nutze.
Highfive!