Michael Schröpl: HTTP_USER_AGENT wird nicht komplett neu überschrieben?Stat.log

Beitrag lesen

Hi,

Ich hab ein cgi dass ip und HTTP_USER_AGENT im stat.log speichert
zwecks überwachung im memberbereich.

warum läßt Du das nicht Deinen Webserver machen? Der kann das alleine
auch.
(Apache: Logformat definieren, da können frei wählbare HTTP-Header
protokolliert werden, also auch der UserAgent.)

Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; QXW0334w)*62.3.239.7*0*Aug 15*steve

Dein Trennzeichen ist nicht ungefährlich. Was hindert mich daran, Dir
einen Request mit einem '*' im UserAgent (den ich in meiner Client-
Konfiguration frei wählen kann) zu senden?

Es gibt kein zuverlässiges Trennzeichen für UserAgent. Deshalb solltest
Du diesesn Feld ans Ende der Zeile stellen und mit "split()" dann den
ganzen Rest der Zeile diesem Feld zuweisen.

$date                 = date;

Lies "time()" und "localtime" für eine bessere Alternative.

if (dbmopen(logins,$loginlog,0666))

Hm - ich würde dafür ja nicht gleich dbmopen() verwenden.

Reicht denn eine normale (am Ende erweiterte) Datei nicht aus?
Datenerfassung und Datenverdichtung gehören doch ohnehin in zwei
verschiedene Anwendungen.

($uag_last,$ip_last,$count_last,$date_last) = split(/\*/,$logins{$username});

Genau das meinte ich. Setze mal den UserAgent auf die letzte Position,
der wird Dir beim split() früher oder später Probleme bereiten - ein '*'
drin und nichts funktioniert mehr.

Viele Grüße
      Michael