Frontend User Logging

gagarin
Beiträge: 6
Registriert: Do 20. Apr 2006, 10:12
Kontaktdaten:

Frontend User Logging

Beitrag von gagarin »

Gibt es eventuell eine Erweiterung bzw. Modul für das Logging der Frontend User Zugriffe, sodass der Username und der Zeitpunkt des Logins angezeigt wird? Habe bisher nur die Logging-Funkton für die Backend-User entdeckt.

Gruss
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Frontend User Logging

Beitrag von emergence »

gagarin hat geschrieben:Gibt es eventuell eine Erweiterung bzw. Modul für das Logging der Frontend User Zugriffe, sodass der Username und der Zeitpunkt des Logins angezeigt wird?
ähm, nein
*** make your own tools (wishlist :: thx)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Nur die letzte Anmeldung oder Big Brother?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
gagarin
Beiträge: 6
Registriert: Do 20. Apr 2006, 10:12
Kontaktdaten:

Beitrag von gagarin »

nur die letzte Anmeldung würde reichen

MfG
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Im Login-Modul ergänzen (nur Output):
Am Anfang:

Code: Alles auswählen

cInclude("classes", "class.frontend.users.php");
In dem Bereich ergänzen, der "sie sind angemeldet als" ausgibt:

Code: Alles auswählen

$oFEUser = new FrontendUser;
$oFEUser->loadByPrimaryKey($auth->auth["uid"]);

$dLastLogin = $oFEUser->getProperty("statistics", "lastlogin");
$oFEUser->setProperty("statistics", "lastlogin", date("Y-m-d H:i:s"));
if ($dLastLogin == "") {
   echo mi18n("This is your first visit");
} else {
   echo sprintf(mi18n("Last login: %s"), $dLastLogin);
}
Bei der Ausgabe kann $dLastLogin natürlich über die date()-Funktion beliebig formatiert werden (siehe http://www.php.net/manual/de/function.date.php). Dabei sollte das Datum ggf. konvertiert übergeben werden:

Code: Alles auswählen

   echo sprintf(mi18n("Last login: %s"), date("d.m.Y H:i", strtotime($dLastLogin)));
Ungetestet.

Übrigens gibt es einen kleinen Haken: Du kennst das letzte Anmeldedatum nur für diese Seite (da die nächste Zeile das Datum schon durch das aktuelle ersetzt). Wenn Du es überall brauchst (bis zur nächsten Anmeldung), sag Bescheid.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
gagarin
Beiträge: 6
Registriert: Do 20. Apr 2006, 10:12
Kontaktdaten:

Beitrag von gagarin »

Vielen Dank, die Erweiterung funktioniert) Gibt es auch eventuell eine Möglichkeit der Ausgabe im Backend? In welcher Tabelle werden diese Sachen gespeichert?

MfG
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Code: Alles auswählen

$oFEUsers = new FrontendUserCollection; 
$oFEUsers->query; 

while ($oFEUser = $oFEUsers->next()) {
   echo $oFEUser->get("name");
   echo $oFEUser->getProperty("statistics", "lastlogin"); 
}
Habe jetzt die DB-Spez nicht zur Hand, mit $oFEUsers->setOrder("name"); vor $oFEUsers->query; könnte man die Liste auch z.B. nach Name sortieren (wenn "name" das DB-Feld ist, welches den Namen enthält).

Ansonsten: In der <prefix>_properties.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Was ich gepostet habe, wäre ein Modul, welches die Angaben ausgeben würde (kann man natürlich noch beliebig erweitern).

Ansonsten habe ich die Antwort nicht ganz verstanden, da - wenn es nur um die Speicherung von Eigenschaften geht - der Weg via Objekt->setProperty der Einfachste ist.

Die Funktionen set und getProperty sind eine Methode des Objekts ItemCollection, siehe class.genericdb.php. Das Frontend User-Objekt ist davon abgeleitet.

Man kann Eigenschaften auch manuell setzen, z.B. als Mandanteneinstellung. Dazu ist die class.properties.php einzubinden, ein Objekt zu erzeugen und über die entsprechenden Methoden der Wert zu speichern - welche Parameter dort benötigt werden, musst Du Dir aus dem Code selbst raussuchen (und für mal die Angaben für eine vorhandene Mandanteneinstellung aus der DB auslesen).

Aber zumindet die Last-Login-Zeit sollte man nicht als Mandanteneinstellung speichern, da es keine Einstellung ist und außerdem pro Nutzer ein Wert definiert werden muss (das ist bei den Mandanteneinstellungen fehl am Platze).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
gagarin
Beiträge: 6
Registriert: Do 20. Apr 2006, 10:12
Kontaktdaten:

Beitrag von gagarin »

HerrB, nochmals danke für die Antworten.
Ich habe die setProperty-Funktion in deiner letzten Antwort übersehen, damit sollte es eigentlich möglich sein, die Frontenduser samt deren Last-Login-Zeitpunkt auf der Welcome-Seite im Backend auszugeben - mal sehen, was daraus wird) Ich werde mal die Ergebnisse nachher posten.

MfG
silicone
Beiträge: 299
Registriert: Di 15. Mär 2005, 10:33
Kontaktdaten:

Beitrag von silicone »

Hallo,

ich habe ein ähnliches Anliegen, kann es aber mit meinen Stümperkenntnissen nicht alleine in den Griff bekommen...

Ich würde gerne abrufen können, wann sich welcher Frontenduser zuletzt eingeloggt hat.

Kann mir jemand dabei helfen? Ich fühle, die Antworten von HerrB sind der Schlüssel zur Lösung. Allein rall ich's aber nicht ;-)


Gruß, Tom
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

War noch ein kleiner Bug drin (den man über einen Blick in die DB leicht auch selbst hätte fixen können...) und das Include muss natürlich rein...

Aber ich bin ja nicht so:

Code: Alles auswählen

cInclude("classes", "class.frontend.users.php");

$oFEUsers = new FrontendUserCollection; 
$oFEUser->setOrder("username");
$oFEUsers->query; 

while ($oFEUser = $oFEUsers->next()) { 
   echo $oFEUser->get("username"); 
   echo $oFEUser->getProperty("statistics", "lastlogin"); 
}
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
silicone
Beiträge: 299
Registriert: Di 15. Mär 2005, 10:33
Kontaktdaten:

Beitrag von silicone »

Hallo HerrB,

ist mir fast schon ein bischen peinlich :oops:

Wenn ich deinen Code in ein Modul packe, bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

Fatal error: Call to a member function on a non-object in ...
Sorry, wenn meine Unwissenheit nervt :D
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 »

silicone hat geschrieben:Wenn ich deinen Code in ein Modul packe, bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

Fatal error: Call to a member function on a non-object in ...
Sorry, wenn meine Unwissenheit nervt :D
Dann versuch mal:

Code: Alles auswählen

cInclude("classes", "class.frontend.users.php");

$oFEUsers = new FrontendUserCollection;
$oFEUsers->setOrder("username");
$oFEUsers->query;

while ($oFEUser = $oFEUsers->next()) {
   echo $oFEUser->get("username");
   echo $oFEUser->getProperty("statistics", "lastlogin");
}
silicone
Beiträge: 299
Registriert: Di 15. Mär 2005, 10:33
Kontaktdaten:

Beitrag von silicone »

Danke, liefert zwar keine Fehlermeldung, aber leider auch keinen output...
silicone
Beiträge: 299
Registriert: Di 15. Mär 2005, 10:33
Kontaktdaten:

Beitrag von silicone »

Es liefert allerdings folgende Fehlermeldung im Backend:

Code: Alles auswählen

[16-Jun-2006 12:27:57] /bios/cms/front_content.php?idcat=54 next_record called with no query pending in Module ID 49.
Hilft das weiter? (Mir leider nicht)
Gesperrt