Seite 1 von 2

Frontend User Logging

Verfasst: Do 20. Apr 2006, 10:18
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

Re: Frontend User Logging

Verfasst: Di 9. Mai 2006, 07:29
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

Verfasst: Di 9. Mai 2006, 16:56
von HerrB
Nur die letzte Anmeldung oder Big Brother?

Gruß
HerrB

Verfasst: Mi 10. Mai 2006, 12:18
von gagarin
nur die letzte Anmeldung würde reichen

MfG

Verfasst: Mi 10. Mai 2006, 15:19
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

Verfasst: Mi 24. Mai 2006, 10:02
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

Verfasst: Mi 24. Mai 2006, 10:17
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

Verfasst: Mi 24. Mai 2006, 11:45
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

Verfasst: Mi 24. Mai 2006, 12:18
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

Verfasst: Di 13. Jun 2006, 08:57
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

Verfasst: Mi 14. Jun 2006, 21:49
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

Verfasst: Do 15. Jun 2006, 08:13
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

Verfasst: Do 15. Jun 2006, 10:34
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");
}

Verfasst: Do 15. Jun 2006, 11:41
von silicone
Danke, liefert zwar keine Fehlermeldung, aber leider auch keinen output...

Verfasst: Fr 16. Jun 2006, 12:34
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)