Logbuch führen

Grille

Erfahrenes Mitglied
Hallo ...

Ich versuche SESSIONs zu nutzen, und habe da einige Probleme.

Um nachzuvollziehen, wer wann online war, führe ich in meiner Datenbank eine Tabelle, die die "benutzer_id", die session_id, das einlog- und auslogdatum, und die IP-adresse speichern.

erste Frage: macht es Sinn eine solche Tabelle zu führen?
Nehmen wir mal an, benutzer_9234 ruft bei mir Zuhause an, und beschwert sich, dass seine Daten geändert wurden, obwohl er nichts gemacht hat. Jetzt kann ich in meine Datenbank gucken und ihm sagen, wann er eingelogt ist und welche IP-adresse er hatte. Aber mehr auch nicht! Wie kann ich denn nun eigentlich feststellen, ob da doch einer von einem anderen Rechner eingelogt ist? Eine Landkarte wo alle IP-Adressen positioniert sind, habe ich ja nicht.

Kann ich die Session die der Benuzer ausgelöst hat eigentlich speichern, und so jeden Schritt nachvollziehen? Ich stell mir vor, dass ich in meiner Tabelle sehen kann, wenn welche Session von welchem User gestartet wurde, und dann in einem Extraordner alle Sessiondateien habe, in denen "Daten" Gespeichert sind. Wie sehen die Daten in einer solchen Datei eigenlich aus? Kann man sie auslesen? Ist es nur Text?

Kann ich eigentlich eine SESSION_ID selbst vergeben und umbenennen?

Grüße,
Grille
 
Zuletzt bearbeitet:
Wenn jemand anders die Daten ändert, dann kann dies ja nur dadurch passieren, dass entweder der Admin dran war, oder jemand der das PW raus bekommen hat, im Falle des PW's ist der jenige selbst dran Schuld, weil er hätte ja ein besseres PW wählen können, nur stelle ich mir die Frage sind die Daten auf der Webseite so wichtig?
 
Wahrscheinlich nicht so wichtig, das ist aber wahrscheinlich auch relativ.

Mich würde es aber schon interessieren, ob es möglich ist, Daten zu sammeln, die eindeutig sagen:
WANN(kein Problem)
WER(ip-adresse ... genauen Ort herausfinden)
WAS (was wurde auf der Webseite gemacht)
 
Du kannst bei manchen IP-Adresse den Ort bestimmen, aber ob dieser dann auch genau mit dem des Benutzers übereinstimmt weiß ich nicht, weil es natürlich auch gut der der Telekom oder so sein.

Du kannst natürlich in deiner Tabelle eintragen: IP-Adresse und was gemacht worden ist, und natürlich die Uhrzeit.
 
Selbstverständlich kannst du alle Aktionen protokollieren. Ich würde allerdings eine Datei der Datenbank vorziehen, beispielsweise:
PHP:
define('LOG_INFO', 0);
define('LOG_WARN', 1);
define('LOG_DEBUG', 2);
define('LOG_ERROR', 3);
define('LOG_FATAL', 4);

function log( $type, $message )
{
	$types = array('INFO', 'WARN', 'DEBUG', 'ERROR', 'FATAL');
	$message = sprintf(
		'%s %s %s@%s %s',
		date('Y-m-d\TH:i:sO', $_SERVER['REQUEST_TIME']),
		$types[$type],
		$_SESSION['user-id'],
		$_SERVER['REMOTE_ADDR'],
		$message
	);
	return error_log($message, 3, '/tmp/log');
}
Anwenden kannst du es dann wie folgt:
PHP:
if( /* Änderung erfolgreich */ ) {
	log(LOG_INFO, 'user data change');
} else {
	log(LOG_ERROR, 'user data change');
}
 
Sehr komfortabel kannst du es über ein "logging-tool" machen. Es gibt z. B. http://www.phpee.com bislang das absolut beste php-script was ich zu dem Thema gefunden habe. So kannst Du genau verfolgen wer wann auf Deiner Seite welche Aktion durchgeführt hat.
 
Die IP-Adresse bringts zur Authentifizierung aber nicht wirklich. Nur an dem einen Tag, an dem sie gespeichert wird.
 
Zurück