Seite 1 von 1

sql fehler beim userpassword ändern: Error removing auto-log

Verfasst: 01.06.2007 12:30
von darkseed111
hallo zusammen !

ich habe bei meinem board seit heute das problem das sich keine userpasswörter mehr ändern lassen. wenn ich das probiere bekomme ich folgenden fehler:

phpBB : Critical Error

Error removing auto-login keys

DEBUG MODE

SQL Error : 1146 Table 'ehj.SESSIONS_KEYS_TABLE' doesn't exist

DELETE FROM SESSIONS_KEYS_TABLE WHERE user_id = 20

Line : 420
File : sessions.php


die tabelle gab es wirklich nicht. :(
ich habe sie angelegt , doch das brachte auch keine besserung.
kann mir da vieleicht jemand helfen ?

hier noch der entsprechende code aus der datei :

/**
* Reset all login keys for the specified user
* Called on password changes
*/
function session_reset_keys($user_id, $user_ip)
{
global $db, $userdata;

$key_sql = ($user_id == $userdata['user_id'] && !empty($userdata['session_key'])) ? "AND key_id != '" . md5($userdata['session_key']) . "'" : '';

$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
WHERE user_id = ' . (int) $user_id . "
$key_sql";

if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error removing auto-login keys', '', __LINE__, __FILE__, $sql);
}

$where_sql = 'session_user_id = ' . (int) $user_id;
$where_sql .= ($user_id == $userdata['user_id']) ? " AND session_id <> '" . $userdata['session_id'] . "'" : '';
$sql = 'DELETE FROM ' . SESSIONS_TABLE . "
WHERE $where_sql";
if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error removing user session(s)', '', __LINE__, __FILE__, $sql);
}

if ( !empty($key_sql) )
{
$auto_login_key = dss_rand() . dss_rand();

$current_time = time();

$sql = 'UPDATE ' . SESSIONS_KEYS_TABLE . "
SET last_ip = '$user_ip', key_id = '" . md5($auto_login_key) . "', last_login = $current_time
WHERE key_id = '" . md5($userdata['session_key']) . "'";

if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error updating session key', '', __LINE__, __FILE__, $sql);
}

// And now rebuild the cookie
$sessiondata['userid'] = $user_id;
$sessiondata['autologinid'] = $autologin_id;
$cookiename = $board_config['cookie_name'];
$cookiepath = $board_config['cookie_path'];
$cookiedomain = $board_config['cookie_domain'];
$cookiesecure = $board_config['cookie_secure'];

setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);

$userdata['session_key'] = $auto_login_key;
unset($sessiondata);
unset($auto_login_key);
}
}



danke schonmal im voraus

tim

Verfasst: 01.06.2007 12:38
von Blauvogel
Hallo,

die Variable SESSIONS_KEYS_TABLE wird normalerweise in der includes/constants.php definiert.

Da sollte dann etwas in der Art stehen:

Code: Alles auswählen

define('SESSIONS_KEYS_TABLE', $table_prefix.'sessions_keys');
Falls nicht, trag es testweise nach.
Die Tabelle phpbb_session_keys muß natürlich in der DB vorhanden sein.

Verfasst: 01.06.2007 13:21
von darkseed111
die table war bei mir nicht vorhanden hab e sie aber per mysqladmin eingefügt.
so. ich habe einfach mal das
define('SESSIONS_KEYS_TABLE', $table_prefix.'sessions_keys');
vorne in der datei eingefügt , weil sonst nichts in der richtung zu finden war und es geht nun.
bleibt nur die frage warum es gefehlt hat und was noch alles fehlt ^^
vieleicht sollte ich nochmal die orginaldateien runterladen und die vorhandenen dadurch ersetzen ...

vielen dank schonmal für die hilfe

tim