Hi,
- Eine Logfunktion, mit dessen Hilfe der Admin sehen
kann, wann wer sich eingeloggt hat.
An dem letzten Punkt bin ich bei meiner Sucher
verzweifelt.
das ist auch kein Wunder. Denn dazu bräuchtest Du ein Session-Konzept, und das liefert Dir weder HTTP noch Server Authentication. Das mußt Du Dir selber bauen.
Welche Benutzer auf welche Seiten zugegriffen haben, das steht hingegen durchaus in Deinem ganz normalen Webserver-Log (Spalte 2 des Log-Formats "Common").
Nur ist das eben kein Transaktionsprotokoll - die Eintrage mit dem Benutzernamen "x" fangen einfach irgendwann an und hören irgendwann wieder auf.
Wann der sich "angemeldet" hat, weißt Du aber nicht und kannst es auch gar nicht wissen. Denn das ist kein Bestandteil von HTTP. Der Browser muß zu jeder einzelnen Seitenanforderung eine gültige Authentifizierung mitsenden - der Webserver unterscheidet nicht, ob das ist erste, die zweiundvierzigste oder die letzte ist.
Vor allem gibt es kein Kriterium dafür, daß die "letzte" auch wirklich genau das ist - es könnte jederzeit noch eine weitere Anforderung desselben Benutzers nachkommen, weil es eben kein "logout" gibt.
Wenn zwischen zwei Zugriffen zwei Stunden Pause liegen, dann kannst Du nicht feststellen, ob der Benutzer in dieser Zeit seinen Browser offen stehen gelassen hat (der würde die im Dialog erfragte Authentifizierung bis zum Ende seines Programmlaufes speichern) oder nicht: Der Server merkt sich die durchgeführten Authentifizierungsprüfungen nicht, weil er keinen Bedarf dafür hat. Er bekommt allerdings durchaus mit, _daß_ sich ein Benutzer neu anmeldet - HTTP-Status 401 - aber er interessiert sich einfach nicht dafür, daß dies etwas Besonderes sein soll, weil es laut HTTP auch nichts Besonderes ist. Was Du willst, wäre als mininimale Erweiterung zu HTTP möglich - solange es Dir nur um die Neu-Anmeldungen geht. Logout "is nich".
Vielleicht solltest Du Dir einen eigenen Webserver schreiben ... oder einen bestehenden modifizieren.
Es könnte durchaus machbar sein, im Quelltext des Apache-Moduls "mod_auth" mal nachzusehen, wie die Status-401-Behandlung im Detail funktioniert - im Prinzip brauchst Du ja nur genau in diesem Moment eine Log-Meldung auszugeben. Das ist letzten Endes genau _ein_ Apache-API-Funktionsaufruf, denke ich mal, nur: Gewußt wo und welcher ...
Viele Grüße
Michael