PHP Server überliest Vars bei GET request

M-o-n-o-t-o-n

Cadet 2nd Year
Registriert
Apr. 2011
Beiträge
16
Hallo!

Das Problem stellt sich wie folgt da. Eine Anwendung fragt beim Server nach und erhält als Antwort diverse Daten zurück um weiterzuarbeiten.
Von der Anwendung wird folgendes an den Server gesendet (Auszug aus dem access.log):
GET /buch.php?buch=%aaJg%84H%c4%e2...

Nun wird die der Request verarbeitet:
PHP:
$a = fopen("buch.txt","a");
$b = print_r($_GET, true);
fwrite($a, $b);

Das klappt auch wunderbar. Das Problem ist das manchmal die erste Variable nicht gelesen bzw. gar nicht verarbeitet wird.
Im Array sieht das dann so aus:

Array
(
[seiten] => 322
...
)


Normalerweise sollte er das so ausgeben.

Array
(
[buch] => ªJg„HÄâ¿`
[seiten] => 322
...
)


Das passiert von ca. 1000 Abfragen ca. 5-10 mal. Ich habe das selbe Script schon auf anderen Umgebungen getestet und hat tadellos funktioniert.
Irgendwas muss an der Serverkonfiguration eingestellt sein, weshalb er sporadisch die erste Variable überliest. Auch nach mehrfachen versuchen bei abfrage der gleichen Datensätze (gleicher Request) funktioniert es nicht. Erste Variable ist in hex und lässt sich auch nicht abändern.
Vielleicht weiß einer von Euch wo dran das liegen kann. Es wird ein Linux (Debian) Server genutzt.

Vielen Dank!

Gruss Monoton
 
Versuch doch mal eine der fehlerhaften Anfragen aus dem Access-Log und teste, ob dann auch nicht geschrieben wird. Dann kannst du evtl. aus der URL mal nach dem Ausschlussverfahren einige Zeichen rausschnehmen. Vielleicht erkennst du dann eine Regelmäßigkeit. Ach und evtl. solltest du die Datei noch sperren, bevor du schreibst.
 
Oder es liegt an Sonderzeichen! Sind es immer diesselben Aufrufe, die schief gehen?
 
Du hast höchstwahrscheinlich ein Codierungsproblem. Allgemeine Empfehlung ist die Umstellung auf UTF-8, sowohl in HTML mit

Code:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

als auch PHP. PHP ist (eigentlich, nahezu) voll UTF-8 kompatibel.

Besser ausgedrückt: PHP frisst UTF-8, solange du eines beachtest: Alle deine .php Dateien müssen in UTF-8 ohne BOM gespeichert sein. Alle statischen Dateien wie bspw. css oder nicht generierte jS Dateien würde ich weiterhin in UTF-8 mit BOM speichern.

Dann, und nur dann, ist UTF-8 mit PHP problemlos möglich und du kannst dir das ganze Codierungsproblem mit PHP, iconv & co sparen.
 
Zurück
Oben