base64_decode funktioniert nich so ganz
franz
- php
hallo,
ich habe hier ein script welches sehr simpel erscheint.
ich habe eine datei test.doc
sie wird eingelesen
und codiert
und dann wieder decodiert
decodierter code müsste also wieder dem original entsprechen, tut es aber nicht, warum?
wie erreiche ich das $encode == $original der wahrheit entspricht?
<?php
$datei = "test.doc";
$file = "new.doc";
$datei_content = fread(fopen($datei,"r"),filesize($datei));
$original = $datei_content;
print "original:<br>$first";
print "<hr>";
$code = chunk_split(base64_encode($original),76,"\r \n");
print "code:<br>$code";
print "<hr>";
$encode = chunk_split(base64_decode($code),76,"\r \n");
print "encode == original:<br>$encode";
$data = fopen($file, "w");
fwrite($data, $encode);
fclose($data);
?>
Halihallo franz
decodierter code müsste also wieder dem original entsprechen, tut es aber nicht, warum?
wie erreiche ich das $encode == $original der wahrheit entspricht?
a) Verkette die Funktionen richtig
b) ggf. binär einlesen und schreiben
$code = chunk_split(base64_encode($original),76,"\r \n");
$encode = chunk_split(base64_decode($code),76,"\r \n");
Nicht wirklich.
Erstens: Kodierst du zuerst mit chunk_split(base64_encode()); wäre die korrekte
Umkehrfunktion base_decode(unchunk_split()). (BEM: Was bedeutet unchunk_split? -
Autorenaufgabe). Überlege dir _genau_, was du kodierst und in welcher Reihenfolge, und
überlege dir dann den inversen Weg für die Dekodierung.
Desweiteren meinst du als Zeilendelimiter "\r \n" nicht wirklich, sondern wenn überhaupt
dann "\r\n" (besser: "\015\012").
Möglicherweise wäre ein open in beiden Fällen im Binärmodus empfehlenswert. Informiere
dich über das "b" Flag des fopen-statements.
Viele Grüsse
Philipp