PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Simple Loggdatei


megamasterxxs
04.01.2003, 14:37
Logmt ist ein kleines Loggingprogramm mit dem man feststellen kann um welche Uhrzeit und
mit was für eine IP ein User was für URL aufruft und von wo er gekommen ist d.h. von welcher
URL ein Link auf Eure Seite/Forum liegt.

Manchmal ist es erforderlich zu wissen, wann ein Besucher (mit welcher IP) was aufgerufen
hat und woher der Aufruf einer bestimmten Seite kam. Dieses kleine Scrip ist zwar nicht
besonders ausgefeilt, erfüllt aber genau diesen Zweck. Eventuell kann es ja jemand gebrauchen.



// Diesen Code schreibt Ihr in die Datei loggmt.php
//
// Datum und Uhrzeit definieren
$jahr=date("Y");
$monat=date("m");
$tag=date("d");
$stunden=date("G");
$minuten=date("i");
$datum=$tag . "-" . $monat . "-" . $jahr. " um " . $stunden . ":" .$minuten;


// Ermittelt die Besucher-IP - Aufruf-URL und woher der Aufruf kommt
$bip=$HTTP_SERVER_VARS["REMOTE_ADDR"];
$url=sprintf("%s%s%s","http://",$HTTP_HOST,$REQUEST_URI);
$referrer=getenv("HTTP_REFERER");


// Echo-Zeilen ev. zu Testzwecken, zeigt am Screen, was geloggt wird.
// echo "Am: $datum User-IP: $bip ließt URL: $url kommt von: $referrer";


// Hier werden die Daten in die Datei loggmt.txt geschrieben
$dateiname="loggmt.txt";
$dateihandle=fopen($dateiname, "a");
fputs($dateihandle,"Am: $datum User-IP: $bip ließt URL: $url kommt von: $referrer \n");
fclose($dateihandle);
?>




Installation:

1. Eine leere Datei loggmt.txt erzeugen

2. Datei loggmt.php und Datei loggmt.txt in das Verzeichnis hochladen, in dem sich die Datei mit Code1 befindet.

3. Code1 am Anfang der index.php oder in jede andere Datei, deren Aufruf Ihr loggen möchtet, einbauen.

Code1:

<?php
require('loggmt.php');
?>

------------------------------


Danach wird in der Datei loggmt.txt folgendes protokolliert:
Am: 01-01-2003 um 10:09 - User-IP: 217.225.50.168
ließt URL: http://www.deineseite.de/ - kommt von: http://www.irgendwoher.de/links/limenu.html

Am: 02-01-2003 um 16:03 - User-IP: 180.108.40.226
ließt URL: http://www.deineseite.de/ - kommt von: http://www.anderswoher.de/cgi-bin/exit/run.cgi?userid=kk_paula&w=1

Am: 03-01-2003 um 22:15 - User-IP: 298.206.59.124
ließt URL: http://www.deineseite.de/ - kommt von: http://www.dortbistdugelinkt.de/cgi-bin/exit/run.cgi?ottokarl&w=3

Am: 04-01-2003 um 19:11 - User-IP: 219.225.50.168
ließt URL: http://www.deineseite.de/ - kommt von: http://www.undauchdort.de/links.html

usw.

Hinweis: Die hier gezeigten Beispieldaten werden in der Loggdatei pro User jeweils in einer Zeile nebeneinander dargestellt.

martin
10.01.2003, 05:39
das wird so nicht funktionieren, da
$HTTP_HOST,$REQUEST_URI
nur mit register_globals zur verfügung stehen.
und diese option sollte eigentlich bei niemandem mehr aktiv sein.

du kannst das $_SERVER array dafür nutzen:

$_SERVER['HTTP_HOST'] und $_SERVER['REQUEST_URI']

der *vorgänger* dieses arrays $HTTP_SERVER_VARS, den du verwendet hast, ist veraltet und sollte nichtmehr genutzt werden - der fällt in zukunft ohnehin ganz weg.

auf php.net gibts irgendwo ne übersicht über diese in php 4.1.0 neu eingeführten *superglobalen* arrays wie $_GET,$_POST,$_COOKIE,$_ENV etc.
die sollte man auch verwenden. das erspart - vorallem bei größeren scripten - ein nerviges anpassen an php5.

2. du kannst das zeitformat direkt in date() formatieren.

date('d-m-Y \u\m G:i');

du musst da nur alles was nicht interpretiert werden soll mit \ *escapen*.

3. es wäre doch viel sinnvoller das ganze ohne den text abzuspeichern, also einfach nur die daten.
sowas wie:
uhrzeit||ip||url||referer

dann könnte man mit der logdatei bequem arbeiten und daraus eine seite generieren.

megamasterxxs
11.01.2003, 00:16
Im Prinzip hast Du ja right denn der PHP Insider lächelt möglicherweise über das Script, ein Anfänger kann aber besser nachvollziehen, wenn es nicht so ganz kompakt (z.B. Date Funktion) geproggt ist und ´sieht´, wie z.B. Tag Monat, Jahr entstehen ´könnten´.

Gleiches gilt beim ´eigentlich überflüssigen Text´ in der Loggdatei. Zu der Funktion kann ich nur sagen, es funktioniert bei Puretec einwandfrei. Ich hatte das Script für einen Bekannten mal in der Frühstückspause zusammengezimmert, so das der das als PHP Anfänger nachvollziehen kann.

Logo kann man es kompakter und eleganter schreiben, es sollte ja auch nur als ´Anreiz´ zu verstehen sein, deshalb ja auch meine Formulierung ´Script ist nicht ausgefeilt´ Auf die neuen *superglobalen* hätte ich eingehen sollen, war aber ursprünglich nicht Sinn meines Posting.

Wie auch immer, anhand beider Postings kann ein interessierter PHP-Anfänger nun ja etwas für sich zusammenstricken. :D