Admin reminder 1.0.7 der Punkt Letzter Besuch mit falschem

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
felix
Beiträge: 179
Registriert: Mi 23.Nov, 2005 23:20

Admin reminder 1.0.7 der Punkt Letzter Besuch mit falschem

Beitrag von felix »

Hallo,

bei meinem Forum wird im Admin reminder 1.0.7 der Punkt "Letzter Besuch" mit falschem Datum angezeigt.

Die Lösung hier fällt weg, da ich nicht den LastVisit Mod eingebaut habe.

Was kann man den machen wenn man nicht den LastVisit Mod eingebaut hat und somit auch nicht das user_lastlogon zur Verfügung hat?
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Das Feld "user_lastvisit" ist dann das Einzigste, was dafür verfügbar ist.
Allerdings wird das meines Wissens nur neu geschrieben, wenn man sich am Board auch neu anmeldet oder die Session abläuft.
Es kann also dann "vermeintlich" falsch sein...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
felix
Beiträge: 179
Registriert: Mi 23.Nov, 2005 23:20

Beitrag von felix »

Also keine Lösung des Problems in Sicht schade.

Dann ist der Mod ja quasi teilweise nutzlos. Hätte ich das mal vorher gewusst. :wall:

Da fällt mir ein, der Zähler der Benachrichtigungen wird ja zurückgesetzt wenn der User nach der Mail wieder ins Forum kommt. Kann man darüber nichts machen?

EDIT:

Was ist denn wenn man in der admin_reminder.php statt

user_lastvisit

einfach

user_session_time

nimmt? Ist das machbar? Funktioniert das? Oder kommt es dann zu Problemen?
Zuletzt geändert von felix am Di 15.Mai, 2007 22:50, insgesamt 2-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ausprobieren.
Ich habe mich mit den User-Zeiten bislang noch nicht so intensiv beschäftigt...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
felix
Beiträge: 179
Registriert: Mi 23.Nov, 2005 23:20

Beitrag von felix »

Ich habe es mal versucht. Scheint zu funktionieren.
Es kommen teilweise doch erheblich andere Zeiten heraus als mit user_lastvisit.

Kann es denn zu Problemen kommen wenn ich denn nun user_session_time benutze? Ist das ein Sicherheitsrisiko?

Ich hänge die geänderte admin_reminder.php mal an.

Da ich nicht viel Ahnung von php habe, frage ich lieber mal. ;)
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Nein, ein Sicherheitsrisiko ist es nicht, ein Feld in einer Abfrage gegen ein anderes auszutauschen.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
felix
Beiträge: 179
Registriert: Mi 23.Nov, 2005 23:20

Beitrag von felix »

Danke Dir für die Info.

Warum sind diesen beiden Werte denn nicht gleich? Was genau besagt den der Wert user_session_time?

Mal dumm fragen. ;)
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Die Sessions laufen nach einer gewissen (im ACP eingestellten) Zeit ab, der User kann sich aber zwischendurch auch selber ab- und wieder anmelden.
Dazu wird bei einem neuen Scriptaufruf die Session_Time meist neu geschrieben und ist daher "zeitnäher", sagt aber nicht unbedingt was zum letzten Anmeldezeitpunkt aus.
Genauer wäre hier wirklich der Wert user_lastvisit...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

user_lastvisit ist der Zeitpunkt des letzten logins (start der letzten session die von einem user genutzt wurde) und user_session_time ist der Zeitpunkt an dem die Sessions das letzte mal aktualisiert wurde.
Das bedeutet aber nicht das user_session_time der letzte Zeitpunkt ist, an dem der User auf dem Board war. Denn die session_time wird (wie oxpus schon geschrieben hat) nicht immer aktualisiert.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
felix
Beiträge: 179
Registriert: Mi 23.Nov, 2005 23:20

Beitrag von felix »

Danke euch beiden für die Ausführungen.

Habe mal weiter gesucht...

Was meint ihr denn dazu?

http://www.phpbb.de/viewtopic.php?t=34306
Zuletzt geändert von felix am Mi 16.Mai, 2007 23:54, insgesamt 2-mal geändert.
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Mir ist überhaupt nicht klar warum über diesen Dusseligen wert immer wieder Diskutiert wird. ^1

Das user_lastvisit nur gesetzt wird wenn der user die cookies deaktiviert hat ist Blödsinn. Da hat sich wohl jemand von den Kommentaren in der session.php irritieren lassen.

Code: Alles auswählen

	//
	// Try and pull the last time stored in a cookie, if it exists
	//
	$sql = "SELECT * 
		FROM " . USERS_TABLE . " 
		WHERE user_id = $user_id";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(CRITICAL_ERROR, 'Could not obtain lastvisit data from user table', '', __LINE__, __FILE__, $sql);
	}

	$userdata = $db->sql_fetchrow($result);
Vielleicht war das in einer alten Version des phpBB mal anders. Aber hier wird ganz klar die Datenbank konsultiert uind geschrieben werden die werte, etwas später, erst in die DB und dann ins Cookie.

Code: Alles auswählen

	if ( $user_id != ANONYMOUS )
	{// ( $userdata['user_session_time'] > $expiry_time && $auto_create ) ? $userdata['user_lastvisit'] : ( 
		$last_visit = ( $userdata['user_session_time'] > 0 ) ? $userdata['user_session_time'] : $current_time; 

		$sql = "UPDATE " . USERS_TABLE . " 
			SET user_session_time = $current_time, user_session_page = $page_id, user_lastvisit = $last_visit
			WHERE user_id = $user_id";
		if ( !$db->sql_query($sql) )
		{
			message_die(CRITICAL_ERROR, 'Error updating last visit time', '', __LINE__, __FILE__, $sql);
		}

		$userdata['user_lastvisit'] = $last_visit;

		$sessiondata['autologinid'] = ( $enable_autologin && $sessionmethod == SESSION_METHOD_COOKIE ) ? $auto_login_key : '';
		$sessiondata['userid'] = $user_id;
	}

	$userdata['session_id'] = $session_id;
	$userdata['session_ip'] = $user_ip;
	$userdata['session_user_id'] = $user_id;
	$userdata['session_logged_in'] = $login;
	$userdata['session_page'] = $page_id;
	$userdata['session_start'] = $current_time;
	$userdata['session_time'] = $current_time;

	setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);
	setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure);
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Sagte ich ja auch bereits schon in Post #2: Wenn man sich "abmeldet" oder die Session abläuft wird hier neu geschrieben.
Daher ist der Wert immer etwas "krumm".
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
felix
Beiträge: 179
Registriert: Mi 23.Nov, 2005 23:20

Beitrag von felix »

Danke für die Erläuterungen.

Ich habe z.B. einen User der war mit dem Wert aus der user_lastvisit das letzte mal im Oktober 2006 im Forum.

Mit dem Wert aus der user_session_time wird aber das richtige Datum angezeigt, 15.05.07.

Anscheinend ist es ja fast "egal" welchen Wert man nun abfragt, es kommt wohl immer zu Verfälschungen.
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Ein solch massiver Unterschied ist aber sehr ungewöhnlich und dürfte es eigentlich gar nicht geben! ^2
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
felix
Beiträge: 179
Registriert: Mi 23.Nov, 2005 23:20

Beitrag von felix »

Ist aber leider so, nicht nur bei einem User. Aufgefallen ist es mir jetzt bei zwei.

Deshalb ärgert mich das ja so, wenn ich einen User lösche mit der Begründung "Du bist nicht mehr aktiv..." und es stimmt nicht. :wall:
Antworten