Mailinglisten-Archive |
Hi! "Echte" Sessions wirst Du aus den reinen Logfiles kaum ermitteln können, da die Datenbasis derartige -sichere- Ableitungen kaum zulässt. Dazu reichen die Infos in den Logfiles schlicht nicht aus. HTTP ist bekanntlich zunächst mal ein statusloses Protokoll, die einzelnen HTTP-Get-Anfragen der Browser an die Server sind aus HTTP-Sicht zunächst einmal Einzelaktionen. Oft wünscht man sich als Sitebetreiber jedoch, Nutzerverhalten analysieren zu können, nacheinander erfolgende Seitenabrufe logisch zusammenzufassen und jeweils einem Nutzer zuzuordnen, z.B. um Warenkörbe zuzuordnen etc. pp. Diese logische Zusammenfassung von HTTP-Requests nennt man dann halt "Session". Was eine "Session" nun ist, bzw. wie man ermittelt, ob die Requests zusammengehören und vom selben Nutzer stammen, ist unterschiedlich gelöst. Rein aus der IP-Adresse und dem zeitlichen Zusammenhang kannst Du m.E. eine Session leider nicht zuverlässig bestimmen, da of Nutzer, die über Proxy-Server kommen, unter derselben IP auftauchen, und aufgrund der dynamischen IP-Vergabe durch die Provider die Wahrscheinlichkeit zu gross ist, dass mehrere Nutzer innerhalb kurzer Zeit unter der gleichen IP surfen. Es gibt aber bewährte Methoden zum Session-Management. Oft macht man das schlicht mittels einfacher Session-Cookies, es reichen speicherresidente Cookies, die nur eine Session-Lebensdauer haben, nicht persistent gespeichert werden müssen. Die beinhalten dann z.B. einfach eine unique Session-ID, die Du erzeugst und beim Nutzer im Cookie ablegst. Dann kannst Du jederzeit bei einem neuen Request den Nutzer "wiedererkennen". Eine weitere, mittlerweile beliebtere Möglichkeit ist das URL-rewriting. Hier wird dann kein Cookie angelegt (manche User mögen ja auch keine Cookies), sondern die Session-ID wird beim ersten Zugriff erzeugt (z.B. als Zufallszahl) und als zusätzlicher Parameter bei den weiteren Requests übergeben (erkennst Du oft an URL's wie "http://www.einesite.de/kaufen.html?sessid=198u32491234972314980" oder so ähnlich. Auch hier kann man dann leicht die Zuordnung des Requests zur gerade laufenden Session vornehmen. Beides sind jedoch Erweiterungen, die im HTTP-Protokoll so nicht vorgesehen sind und auch i.d.R. nicht gesondert im Logfile landen. Man realisiert das dann halt über die jeweilige Scriptsprache, die man verwendet. Application-Server und Sprachen wie PHP haben sowas dann auch gleich eingebaut, so dass man sich nicht selbst um's Session-Management gross kümmern muss. Zumindest beim URL Rewriting würde die Session-ID, da sie ja jedes Mal mit der URL übergeben wird, m.E. im Logfile ermittelbar sein (sie müsste ja als Teilstring bei Dir im Feld "url" stehen. Du müsstest halt dafür sorgen, dass eine solche ID auch erzeugt und benutzt wird. Mit "nackten" HTML-Dateien und den Standard-Logfiles ist das m.E. nicht möglich. Gruss, Bruno RF> Am Sam, 05 Mai 2001 schrieb Michael Bergbauer: >> > Ich habe die Logfiles meines Apache mit einem Perlscript zerlegt und in >> > eine mySQL-Tabelle "logdata" mit den folgenden Spalten importiert: >> > >> > ID >> > client >> > zeit >> > methode >> > url >> > protokoll >> > status >> > bytes >> > agent >> > referer >> > >> > Somit kann ich prima nach allem möglichen abfragen. Was ich aber irgendwie >> > nicht hinbekomme, ist eine Abfrage nach Sessions bzw. Visits. Eine Session >> > beginnt ja mit dem Auftreten einer client-IP-Adresse, die seit einer >> > festgelegten Zeit (z.B. 30min) vorher nicht auftrat. Das Ende der Session >> > ist das letzte Auftreten dieser IP für die festgelegte Zeit. --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive