Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 16. Oktober 2015 11:18

Dancer62
Server-Pate
Ort: 26345 Bockhorn, Niedersachsen
Registriert: 08. November 2013
Beiträge: 414

[GELÖST] Log-Dateien über Zugriff auf einzelne Seiten erstellen ?

Hallo Forengemeinde,

nach langer Zeit der Abwesenheit (aber nicht Untätigkeit) habe ich mich wieder intensiver mit CMSms beschäftigt und bin auf ein - wie ich hoffe, kleines - Problem gestoßen : ich möchte wissen, wer (ggfs. wann) in meinem internen Bereich (Zugang nur mit Nutzername und Passwort) Zugriff auf welche Seiten gehabt hat. Das soll weniger der Kontrolle, als dem Nachweis dienen, dass jemand eine bestimmte Seite angeschaut hat.
Das Ganze sollte entweder als eine Log-Datei mit Einträgen für alle (Unter-)Seiten einer Seite bzw. bestimmte Seiten oder als Log-Datei pro Seite realisiert / konfiguriert werden können.
Wenn es da bereits ein Modul gibt, wäre das natürlich toll, aber ich habe da auf Forge auf die Schnelle nichts gefunden. Falls jemand etwas in der Richtung programmiert haben sollte, wäre ich über eine Unterstützung bei der Realisierung natürlich sehr dankbar.

Vielen Dank im Voraus,

Dancer62


Man ist so alt, wie man sich fühlt...

Offline

#2 16. Oktober 2015 18:18

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: [GELÖST] Log-Dateien über Zugriff auf einzelne Seiten erstellen ?

Dancer62 schrieb:

Wenn es da bereits ein Modul gibt, wäre das natürlich toll,

Das gesuchte Modul könnte Hitcounter heißen wink

http://dev.cmsmadesimple.org/projects/hitcounter

Dancer62 schrieb:

aber ich habe da auf Forge auf die Schnelle nichts gefunden.

Die Suche dort funktioniert immer noch nicht sad.

Offline

#3 19. Oktober 2015 12:13

Dancer62
Server-Pate
Ort: 26345 Bockhorn, Niedersachsen
Registriert: 08. November 2013
Beiträge: 414

Re: [GELÖST] Log-Dateien über Zugriff auf einzelne Seiten erstellen ?

cyberman schrieb:

Das gesuchte Modul könnte Hitcounter heißen wink

Danke cyberman,

aber wenn ich die Beschreibung des Moduls richtig verstanden habe, dann kann der HitCounter zwar eine IP-Adresse und auch einen User-Agent zurückverfolgen, er sagt mir aber nicht den Namen des eingeloggten Nutzers - und nur der ist für mich eigentlich interessant...  hmm

Könnte man das Modul FEU dazu benutzen ? Ich habe in dessen Hilfe gelesen, dass ich mit Hilfe von Smarty einige Informationen 'herauskitzeln' kann. Die entscheidende Frage ist allerdings, wie bekomme ich den Namen des (eingeloggten) Nutzers heraus ? Ich kann zwar mittels 'get_userinfo' und 'get_userid' einige Informationen erhalten, aber dazu muss ich den 'username' wissen. Und wenn ich den weiß, brauche ich den Rest nicht (mehr)  sad .

Oder müsste ich mit Hilfe einer "FOR...EACH"-Schleife alle Nutzernamen der Datenbank (sind max. 120) auf die jeweilige 'userid' abfragen und mit der eingetragenen 'userid' vergleichen ?
Wird die 'userid' vom System vergeben oder kann / muss ich sie in FEU für die einzelnen Nutzer selber vergeben ? Falls sie vom System vergeben wird, ist sie dann "fest" an diesen Nutzer gebunden oder kann sie sich - wie z.B. die IP-Adresse - bei jedem Einloggen dieses Nutzers ändern ?
Kann ich auch nachträglich noch weitere Felder (z.B. User-ID) für bestehende Nutzer zur FEU-Datenbank hinzufügen ?

Vielen Dank schon mal im Voraus,

Dancer62

Beitrag geändert von Dancer62 (19. Oktober 2015 12:31)


Man ist so alt, wie man sich fühlt...

Offline

#4 19. Oktober 2015 14:00

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: [GELÖST] Log-Dateien über Zugriff auf einzelne Seiten erstellen ?

Sowas ähnliches hatten wir doch schon mal: http://www.cmsmadesimple.de/forum/viewtopic.php?id=2096
Versuchs mal mit diesem Plugin:

<?php
function smarty_function_feu_accesslog($params, &$template)
{
	# get current page
	if(!$content_obj = cms_utils::get_current_content())
		return;
	
	# get FEU module
	if(!$feusers = &cms_utils::get_module('FrontEndUsers'))
		return;
	
	# get user id
	if(!$userid = $feusers->LoggedInId())
		return;
	
	# get user name
	$username = $feusers->GetUserName($userid);
	
	# get logfile
	$config = cmsms()->GetConfig();
	$dir    = $config['uploads_path'] . DIRECTORY_SEPARATOR . 'feu_accesslog';
	if(!is_dir($dir))
		mkdir($dir, 755, true);
	
	$logfile = $dir . DIRECTORY_SEPARATOR . $content_obj->Alias();
	
	# write log
	if(!$fp = fopen($logfile, "a"))
		return;
	
	while(!flock($fp, LOCK_EX|LOCK_NB, $wouldblock)) 
	{
		if ($wouldblock) 
			usleep(1);
		else
		{
			fclose($fp);
			return;
		}
	}
	
	$timestamp = time();
	$date      = date("d.m.Y", $timestamp);
	$time      = date("H:i:s", $timestamp);
	
	fputcsv($fp, array($date, $time, $username));
	
	flock($fp, LOCK_UN);
	fclose($fp);
}
?>

Als "function.feu_accesslog.php" im Verzeichnis "/plugins" speichern und im Template oder Seiteninhalt mit {feu_accesslog} aufrufen.
Die Logs werden im Verzeichnis "/uploads/feu_accesslog" gespeichert.
Pro Seite wird eine Datei mit dem Namen des Seitenalias angelegt.
Gespeichert wird Datum, Uhrzeit und Benutzername im CSV Format (z.B. für die spätere Auswertung via Excel o.ä.).
Geht das in die richtige Richtung?

Beitrag geändert von NaN (19. Oktober 2015 14:14)


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#5 19. Oktober 2015 15:44

Dancer62
Server-Pate
Ort: 26345 Bockhorn, Niedersachsen
Registriert: 08. November 2013
Beiträge: 414

Re: [GELÖST] Log-Dateien über Zugriff auf einzelne Seiten erstellen ?

Super NaN,

das sieht genau danach aus, wonach ich gesucht habe. Werde das gleich mal einbauen und schauen, ob's funktioniert... wink

Edit:
Es hat funktioniert !!! Vielen Dank an NaN, ich kann dieses Script nur uneingeschränkt weiterempfehlen  lol

Beitrag geändert von Dancer62 (20. Oktober 2015 11:12)


Man ist so alt, wie man sich fühlt...

Offline

#6 22. Oktober 2015 23:25

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: [GELÖST] Log-Dateien über Zugriff auf einzelne Seiten erstellen ?

Dancer62 schrieb:

dann kann der HitCounter zwar eine IP-Adresse und auch einen User-Agent zurückverfolgen, er sagt mir aber nicht den Namen des eingeloggten Nutzers - und nur der ist für mich eigentlich interessant...  hmm

Ok, dann hab ich wohl dies hier

Dancer62 schrieb:

Das soll weniger der Kontrolle, als dem Nachweis dienen, dass jemand eine bestimmte Seite angeschaut hat.

wohl etwas zu global verstanden wink.

Offline