php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.05.2007, 00:43  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 118
saibot
Standard Fehler in txt Datei

Hallo, ich will auf meiner Seite bei jeden Aufruf ein paar Informationen mitloggen um Statistiken zu generieren. Das ganze passiert über eine txt-Date. Funktioniert auch soweit, nur immer wieder passiert es, dass in die Textdatei sehr merkwürdige Sachen geschrieben werden, die dann im firefox nur mit vielen ????? dargestellt werden.

PHP-Code:
if (!file_exists("userlogs.txt")) { $datei=fopen("userlogs.txt","w"); fclose($datei); }
            
$userlogfile=fopen("userlogs.txt","a");
            
fputs($userlogfile,"$Uhrzeit | $ip | $pagename | $info20\n");
            
fclose($userlogfile); 
Ist da drin irgendwie ein Fehler? Wenn ich die Logdatei in den Editor kopiere, sehe ich statt der ??? lauter leere Rechtecke. Woher können diese komischen Zeichen kommen? Es sind auch nicht immer gleich viele solche Zeichen, mal mehr mal weniger. Versteh ich nicht.

Also die Logs sehen z.B. so aus:

Zitat:
19.05.2007 um 19:30 | 084.xxx.xxx.xxx | hinweise | Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
19.05.2007 um 20:39 | 080.xxx.xxx.xxx | Gallery | Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
�������������������������������������������������� ���19.05.2007 um 21:06 | 172.176.049.218 | Links | Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
19.05.2007 um 21:06 | 172.xxx.xxx.xxx | Home | Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
saibot ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.05.2007, 09:36  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Das ist ein Zeichensatzfehler. Versuch mal im FF unter "Anzeige" den Zeichensatz manuell zu ändern und schau, was dann da so raus kommt.

Was sollte denn in $info20 normalerweise so stehen?
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 24.05.2007, 11:20  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Versuch mal die Werte dieser Zeichen herauszufinden, zum Beispiel in dem du die Zeichen an die PHP-Funktion ord() übergibst.
Dadurch bekommst du heraus, um welches Zeichen es sich handelt. Vielleicht kommst du dem ganzen dann damit auf die Schliche.

Wie generierst du denn $Uhrzeit und $info20 und warum verwendest du mal Englisch mal Deutsche begriffe?
Zergling-new ist offline  
Alt 24.05.2007, 16:27  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 118
saibot
Standard

Hab im FF mal einige durchprobiert, da kamen trotzdem die ??? raus.

Hier mal das gesamte Teil:

PHP-Code:
$ip getenv("REMOTE_ADDR");
$logintime=time();
$Uhrzeit date("d.m.Y u\m H:i ",$logintime);
    
$info20=getenv("HTTP_USER_AGENT");
    
if (!isset(
$pagename)) $pagename='_';
    
$laenge=strlen($ip);
    
$ipteile=explode(".",$ip);
$ipformat=sprintf("%-15s"$ip);
$teil1=sprintf("%03s"$ipteile[0]);
$teil2=sprintf("%03s"$ipteile[1]);
$teil3=sprintf("%03s"$ipteile[2]);
$teil4=sprintf("%03s"$ipteile[3]);
$ipteileformat=array("$teil1","$teil2","$teil3","$teil4");
$ipfertig=implode(".",$ipteileformat);
    
if(
strlen($pagename)>13)
{
    
$pagename=substr($pagename,0,13);
}
    
$pagename=sprintf("%-13s",$pagename);


if (!
file_exists("userlogs.txt")) { $datei=fopen("userlogs.txt","w"); fclose($datei); }
            
$userlogfile=fopen("userlogs.txt","a");
            
fputs($userlogfile,"$Uhrzeit | $ipfertig | $pagename | $info20\n");
            
fclose($userlogfile); 

Deutsch und Englisch gemischt...hm Zufall
Hab mir die Datei jetzt vom Server geladen und mit einem Hex-Editor angeschaut. Die ??? haben den Hex-Wert 00.
saibot ist offline  
Alt 24.05.2007, 17:19  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Naja, user-agent ^^ Is manipulierbar und sowieso: Vielleicht haste da nen Asiaten anner Backe Wenn dein Script dann auf Latin-1 oder son Spass läuft, weiß ja net ^^
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 24.05.2007, 17:25  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 118
saibot
Standard

Mir ist gerade nochmal was ganz komisches aufgefallen.

folgende Zeilen waren in der Datei vorhanden (abgekürzt):

Zitat:
24.05.2007 um 16:46 | TB | Polvergl
24.05.2007 um 16:49 | Zeile1
24.05.2007 um 16:49 | Zeile2
24.05.2007 um 16:49 | Zeile3
24.05.2007 um 16:51 | Zeile4
24.05.2007 um 16:53 | Zeile5
24.05.2007 um 16:54 | Zeile6
24.05.2007 um 16:54 | Zeile7
24.05.2007 um 16:54 | Zeile8
24.05.2007 um 16:54 | Zeile9
24.05.2007 um 16:54 | Zeile10

Kurz darauf stand das drin:

Zitat:
24.05.2007 um 16:49 | Zeile1
24.05.2007 um 16:49 | Zeile2
24.05.2007 um 16:49 | Zeile3
�������������������������������������������������� �������������������������������������������������� �������������24.05.2007 um 17:08 | Zeile11
24.05.2007 um 17:10 | Zeile12
Die ominösen Zeichen werden also nicht angehängt, sondern bestehende Zeichen werden vermurkst


Wie kann das mit fputs() passieren dass bestehende Zeilen einfach überschrieben werden?? Hab keine Idee mehr an was das liegen könnte. Serverfehler? Gleichzeitige Zugriffe solang die Datei noch geöffnet ist? Hmmm
saibot ist offline  
Alt 24.05.2007, 17:27  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 118
saibot
Standard

Zitat:
Zitat von KingCrunch
Naja, user-agent ^^ Is manipulierbar und sowieso: Vielleicht haste da nen Asiaten anner Backe Wenn dein Script dann auf Latin-1 oder son Spass läuft, weiß ja net ^^
Passiert leider auch manchmal wenn ich selber die Seite aufruf, und meinen User Agent kenn ich, der enthält nix was nicht dargestellt werden könnte
saibot ist offline  
Alt 24.05.2007, 17:36  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Vielleicht war der User-Agent eines Benutzers ja mit einer Injection versehen. Wer weiß.
Pragmatisch gesehen sollten wir das Problem dadurch lösen, dass du statt Dateien auf Datenbanken zugreifen solltest.

Was spricht dagegen? Ich persönlich habe jetzt wenig Lust zu raten.
Zergling-new ist offline  
Alt 24.05.2007, 17:44  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 118
saibot
Standard

Zitat:
Zitat von Zergling
Vielleicht war der User-Agent eines Benutzers ja mit einer Injection versehen. Wer weiß.
Pragmatisch gesehen sollten wir das Problem dadurch lösen, dass du statt Dateien auf Datenbanken zugreifen solltest.

Was spricht dagegen? Ich persönlich habe jetzt wenig Lust zu raten.
Das wäre nun mein nächster Schritt, der allerdings wohl aufwändiger wird. Ich dachte vielleicht hab ich irgendwas übersehen.
saibot ist offline  
Alt 24.05.2007, 17:50  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Naja bei User-Input hast du immer das Problem, dass er ungefiltert Schaden anrichten kann. Vielleicht ists auch was völlig anderes. Wir können dir hier zwar Vorschläge unterbreiten, woran es liegen könnte, aber letztlich kannst nur du es rausfinden.

Du musst eben Abschätzen ob du das jetzt grade biegst und in 2 Wochen vielleicht wieder ein neues Problem mit den Dateien hast (zum Beispiel Datei leer, passiert auch schnell) oder ob du jetzt die Zeit zur Umstellung nutzt und dann auch für "immer" (geflügeltes Wort) Ruhe hast. Zumindest MySQL wird seinen Job richtig machen.

Abgesehen davon musst du ja nur eine MySQL-Tabelle anlegen und ein INSERT abschicken. Finito.

Zitat:
der allerdings wohl aufwändiger wird
Das kann ich also nicht bestätigen
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Hochgeladene Datei wird doppelt abgelegt thecracked PHP Tipps 2008 3 01.07.2008 16:31
Datei per Buttonklick runterladen... go1denboy PHP Tipps 2008 7 14.06.2008 20:25
AJAX auf entfernte Datei GSJLink HTML, Usability und Barrierefreiheit 5 02.03.2008 11:29
Großer Baum -> Große Datei -> Hohe Ladezeit :( PsychoEagle PHP Tipps 2008 7 22.09.2007 12:44
Datei mehrmals öffnen und schließen in einem Skript PHP Tipps 2005-2 14 14.07.2005 18:12
Fehler bei var übergabe in include datei JEGO PHP Tipps 2005-2 9 16.06.2005 15:28
Includete Datei nicht gleich ausgeben Madden PHP-Fortgeschrittene 1 12.05.2005 00:19
aus php datei eine pdf datei erzeugen lassen raffnix PHP-Fortgeschrittene 5 04.02.2005 15:08
[Erledigt] mail versand mit anhang (-- fopen(), fread(), filesize() --) PHP Tipps 2005 5 29.01.2005 18:36
fehler beim öffnen einer php3 Datei auf dem Server !? PHP Tipps 2004 5 04.11.2004 19:25
[Erledigt] mysql fehler PHP Tipps 2004 2 03.11.2004 00:32
Datei mit php erzeugen Stümper PHP Tipps 2004 4 12.10.2004 12:51
php und ftp PHP Tipps 2004 4 07.10.2004 09:58
fehler in einer php datei!!! PHP Tipps 2004 1 14.07.2004 07:43
datei upload + Fehler PHP Tipps 2004 5 03.06.2004 13:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
textdatei mit lauter hex ff überschrieben

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:31 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.