In gebruikerslijst als gast en ingelogd

Installatie lukt niet? Plotseling een foutmelding. Of weet je niet hoe iets werkt. Problemen met phpBB2 kun je in dit archief opzoeken.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Gesloten
Lontronics

In gebruikerslijst als gast en ingelogd

Bericht door Lontronics » 08 jan 2006, 17:14

Support template:
  • Wat is het probleem?
    Wanneer je inlogt blijf je ook als gast in de lijst staan

    Wanneer ontstond het probleem?
    Al zolang als ik me kan herinneren

    Adres van je forum:
    http://www.hayabusaclubholland.nl/?frame=forum/

    Geïnstalleerde mods:
    Log registration IP,
    Admin user list,
    Merge topics,
    Quick Reply,
    Fast Redirect,
    Fast & Furious
    Spamsecure

    Eigen mods:
    Load in frames
    Back in frames
    Logout when in banlist
    Fast search
    No quote in edit topic
    No pictures for guests
    60 minutes online


    Huidige template:
    Aangepaste subsilver

    phpBB versie:
    2.0.19

    Host:
    Sohosted

    Heb je onlangs een mod of stijl geïnstalleerd?
    Nee

    Heb je gezocht naar een antwoord?
    Ja, niets te vinden
Overige opmerkingen:
Wanneer je niet ingelogd bent, sta je netjes in de lijst onderaan de indexpagina als gast. Wanneer je inlogt wordt je netjes onder je naam weergegeven in de gebruikerslijst, echter je wordt niet verwijderd als gast.
Oftewel, als er 6 mensen als gast op het forum komen, en vervolgens inloggen, worden er 12 users online weergegeven en zie je 6 gasten en 6 gebruikers in de lijst staan.

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 08 jan 2006, 17:29

Ik denk dat het door deze mod komt: 60 minutes online

Die houdt, denk ik, sessies voor 60 minuten vast, en zal waarschijnlijk ook gebeuren met gastsessies.
... Maar ik modereer (nog) niet.

Lontronics

Bericht door Lontronics » 08 jan 2006, 17:45

Ik ging er vanuit dat wanneer je inlogt, sessies met eenzelfde session_id of session_ip wel verwijderd zouden worden, maar blijkbaar gebeurt dat bij mij dus niet.

De 60min. online mod stelt niet zoveel voor:

Code: Selecteer alles

## 60 MINUTEN WHO-IS-ONLINE MODIFICATIE:
open admin/index.php 
find 		AND u.user_session_time >= " . ( time() - 300 ) . " 
replace with	AND u.user_session_time >= " . ( time() - 3600 ) . " 
find		AND session_time >= " . ( time() - 300 ) . " 
replace with	AND session_time >= " . ( time() - 3600 ) . " 

open includes/page_header.php 
find		AND s.session_time >= ".( time() - 300 ) . " 
replace with	AND s.session_time >= ".( time() - 3600 ) . " 

open language/lang_english/lang_main.php 
find		$lang['Online_explain'] = 'This data is based on users active over the past five minutes'; 
replace with	$lang['Online_explain'] = 'This data is based on users active over the past hour'; 

open viewonline.php 
find		AND s.session_time >= ".( time() - 300 ) . " 
replace with	AND s.session_time >= ".( time() - 3600 ) . " 
Hierin wordt dus niets met de sessies zelf gedaan.

Is het zo dat bij een standaard phpbb installatie, iemand idd ook nog als gast wordt weergegeven na het inloggen, maar dan na 5 minuten uit de lijst verdwijnt omdat de sessie dan vervalt?
Of wordt de sessie normaliter verwijderd, of vernieuwd met username?

Lontronics

Bericht door Lontronics » 08 jan 2006, 18:19

Ik heb het verhaal nu voorlopig opgelost door een extra routine toe te voegen aan session_page_start. Hiermee worden oude gast sessies met eenzelfde IP nummer als een ingelogde gebruiker verwijderd.
Nadeel is dat wanneer je dus twee gebruikers op 1 ip adres hebt, waarvan 1 gast, deze niet wordt weergegeven.
Gelukkig is die kans klein ;)

De code:

In /includes/sessions.php zoek (ca. regel 284):

Code: Selecteer alles

	if (!preg_match('/^[A-Za-z0-9]*$/', $session_id))
	{
		$session_id = '';
	}
	$thispage_id = (int) $thispage_id;
Hieronder voeg toe:

Code: Selecteer alles

	//
	// Delete guest sessions when logged in
	//
	if ($user_id != ANONYMOUS)
	{
		//
		// Delete expired sessions
		//
		$sql = 'DELETE FROM ' . SESSIONS_TABLE . " 
			WHERE session_ip = '$user_ip' 
				AND session_logged_in = 0";
		if ( !$db->sql_query($sql) )
		{
			message_die(CRITICAL_ERROR, 'Error clearing sessions table', '', __LINE__, __FILE__, $sql);
		}	
	}

Lontronics

Bericht door Lontronics » 08 jan 2006, 19:55

De vraag blijft overigens wel waar het bij mij nou fout gaat.
Mochten er dus nog tips zijn dan hoor ik die graag :thumb:

Groeten,
Jan

Gesloten