Axel Richter: JUHUUUUU!!!

Beitrag lesen

Hallo,

ich habe ja schon gepostet, dass mein Upload auf einem Script aus den FAQs der Newsgroups unter http://www.php-faq.de basiert. Dort wurden aber die Zeilenumbrüche nicht mit CR/LF, sondern nur mit CR erzeugt.

<anmerkung modus="Krümelkacker">Nein nur mit NewLine.</anmerkung>
Was aber trotzdem falsch ist, weil in HTTP konsequent CR/LF als Zeilenumbruch definiert ist.

In meinem Script habe ich das einfach geändert, ohne auf eine kleine Winzigkeit in der Zeile
$dc += strlen($bo)+3;
zu achten. Dort wird die Content-Length fest um drei erhöht, da der Scriptautor seine CRs aufaddiert hat. Ich musste diesen Wert verdoppeln, da meine Zeilenumbrüche ja doppelt soviele Zeichen verbrauchen.

Hm, eigentlich hast Du doch aber nur _ein_ Zeichen mehr, nämlich \r\n statt \n. Nein, der Scriptautor hat einen wirklichen _Fehler_ dort im Script. Er zählt beim ersten Schleifendurchlauf:

$dc += strlen($bo)+3;

also Länge von %bo + 3 Zeichen, gibt aber dann im zweiten Schleifendurchlauf aus:

$ds = "--".$bo."--\n";

also 2 Zeichen + Länge von $bo + 3 Zeichen.

Bei Dir sind das

$ds = "--".$bo."--\r\n";

also 2 Zeichen + Länge von $bo + 4 Zeichen.

viele Grüße

Axel