Wer kennt das nicht, man hat ein Skript programmiert und dies hat einen Fehler bei der Verarbeitung der Daten. Selber beim mehrmaligen Nachsehen des Quellcodes kommt man dem Fehler nicht auf die Schliche. Es gibt nun zwei Möglichkeiten das Problem in den Griff zu bekommen.
Die erste Variante ist, wir nehmen den gesamten Quellcode auseinander und überprüfen jeden Abschnitt. Es ist leider manchmal nicht ganz nachvollziehbar wo nun der Fehler sich verbürgt, da man meist nicht die gleichen Eingaben beziehungsweise Daten übermittelt die den gesuchten Fehler hervorrufen. An dieser Stelle bleibt uns leider nur noch die Möglichkeit, eine so genannte Log-Datei zu erstellen.
Da ich ab und zu dieses Problem habe, stelle ich euch meine log Funktionen an dieser Stelle zur Verfügung. Denn meist geht es vielen genauso wie mir.
<?php
function log_message( $msg, $strip = true, $file='log_message.txt' ) {
// an dieser Stelle wird geprüft, ob eine Wert vorhanden ist
if ( $msg ) {
//sollten Sie, Userdaten mit dieser log Funktion
// loggen, sollten Sie die Nachricht vorher nach
//schädlichen Tags überprüfen und entfernen
if( $strip ) {
$msg = strip_tags($msg);
$msg = html_entity_decode( $msg );
}
// wenn die Nachricht ein Array ist, dann werden wir <br>
// dies komplett durch eine Schleife laufen lassen mit
// dem Schlüssel und dem Inhalt.
if(is_array($msg)){
$msg_new='';
foreach ($msg as $key => $value) {
$msg_new.=$key."=>".$value."n";
}
$msg=$msg_new;
}
if( strpos( $msg, '?xml' ) === false )
$msg = preg_replace( "/n|r|t/", " ", $msg );
// das Datum erfassen
$now = date("d/m/Y H:i:s");
$logfile = $file;
// die IP Adresse ermitteln von dem User
// der das Skript aufgerufen hat
$ip=$_SERVER['REMOTE_ADDR'];
$fp = @fopen( $logfile, "a" );
if ($fp) {
// Daten schreiben
fputs( $fp, "[$now - $ip] $msgn" );
fclose( $fp );
}
}
}
?>
Wenn man nun die Funktion nutzen möchte, ruft man diese an der Stelle des Scripts folgendermaßen auf.
<?php
//log_message
log_message('Logdaten, die Sie loggen wollen', false,'log_daten_von.txt');
//#log_message
?>
Ich hoffe ich konnte euch mit dieser Funktion ein wenig behilflich sein bei der nächsten Fehlersuche.