Pagina 1 van 1

Session key probleem.

Geplaatst: 22 sep 2006, 18:56
door Paul
Support Template
  • Wat is het probleem? In de tabel phpbb_sessions_keys staan voor verschillende users meerdere entry's, wat als ik zo de code in sessions.php bekijk, niet helemaal klopt. Kan iemand mij bevestigen dat ik voor iedere user niet meer als 1 entry mag hebben?
    Wanneer ontstond het probleem?Toen ik de database bekeek.
    Adres van je forum: NVT
    Modifications op je forum: Te veel om optenoemen, geen aanpassingen mbt tot sessions.php behalve dan gekoppeld aan andere db, maar die maakt geen wijzigingen aan de keys table.
    Huidige stijl: zelfgemaakt
    phpBB versie: 2.0.21, maar zwaar aangepast.
    Waar is je forum gehost: phpbbhost
    Heb je onlangs iets verandert aan je forum? Nee.
Overige opmerkingen:Geen.

Geplaatst: 22 sep 2006, 21:17
door Stef
Als je in sessions.php kijkt bij het volgende stukje:

Code: Selecteer alles

			if (isset($sessiondata['autologinid']) && (string) $sessiondata['autologinid'] != '')
			{
				$sql = 'UPDATE ' . SESSIONS_KEYS_TABLE . "
					SET last_ip = '$user_ip', key_id = '" . md5($auto_login_key) . "', last_login = $current_time
					WHERE key_id = '" . md5($sessiondata['autologinid']) . "'";
			}
			else
			{
				$sql = 'INSERT INTO ' . SESSIONS_KEYS_TABLE . "(key_id, user_id, last_ip, last_login)
					VALUES ('" . md5($auto_login_key) . "', $user_id, '$user_ip', $current_time)";
			}
Zie je dat ie enkel bijwerkt bij autologin, maar is dit niet het geval dan gooit hij er een nieuwe rij bij.

Het is dus mogelijk om meerdere rijen voor dezelfde gebruikers te krijgen.

Geplaatst: 22 sep 2006, 21:34
door Paul
Je moet niet alleen naar dat stukje kijken, ook naar deze:

Code: Selecteer alles

	//
	// Remove this auto-login entry (if applicable)
	//
	if ( isset($userdata['session_key']) && $userdata['session_key'] != '' )
	{
		$autologin_key = md5($userdata['session_key']);
		$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
			WHERE user_id = ' . (int) $user_id . "
				AND key_id = '$autologin_key'";
		if ( !$db->sql_query($sql) )
		{
			message_die(CRITICAL_ERROR, 'Error removing auto-login key', '', __LINE__, __FILE__, $sql);
		}
	}
(Deze wordt aangeroepen als je uitlogt), hier wordt de key dus weer verwijderd, dus zou je zeggen dat het neit moet kunnen.

Geplaatst: 22 sep 2006, 22:00
door Stef
Het $autlogin_key is toch steeds verschillend?

Geplaatst: 22 sep 2006, 22:07
door Paul
Nee. Die komt direct uit de users table.

Geplaatst: 22 sep 2006, 22:22
door Stef
Ik zie sessions_key nergens terug in de users_table. :-) Dus ik vermoed dat die gewoon verschillend is. Heb het nog even gecheckt in een database en meerdere gebruikers is gewoon normaal.

Hoe en waarom kan ik nu niet uitzoeken, zal waarschijnlijk met verschillende PC's te maken hebben.