Binärdaten zu Browser senden

Hallo *,

bin in PHP unerfahren deshalb meine Frage:

Folgendes Skript soll ein 35 Byte großes Pixel-gif an den
Browser senden.

header("Content-type: image/gif");
header("Content-length: 35");
echo 0x47,0x49,0x46,0x38,0x37,0x61,0x01,0x00,0x01,0x00,0x80,0x00,0x00,0xff,0x00,0x00;
echo 0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x02,0x02,0x44;
echo 0x01,0x00,0x3b;
?\>

Doch leider sieht das Ergebnis folgendermaßen aus:

00000000h: 37 31 37 33 37 30 35 36 35 35 39 37 31 30 31 30 ; 7173705655971010
00000010h: 31 32 38 30 30 32 35 35 30 30 30 30 30 34 34 30 ; 1280025500000440
00000020h: 30 30 30 31 30 31 30 30 32 32 36 38 31 30 35 39 ; 0001010022681059

Was mache ich Falsch?
Wenn ich die Datei speichere wird als Dateiname der Skriptname + Extension .gif? Kann man das verhindern?

Gruß Christian

echo
0x47,0x49,0x46,0x38,0x37,0x61,0x01,0x00,0x01,0x00,0x80,0x00,0x00,0xff,0x00,0x00;

die Daten werden als Zahlen ausgegeben. Was du willst ist:

echo chr(0x47)

statt

echo 0x47

Gruß

Marian

Danke - das hat geklappt
Hallo Marian,

danke das hat geklappt.
Hast du ne Ahnung warum der Browser „.gif“ als Extension an den Dateinamen hängt? Wegen des Content-Types?
Kann man das verhindern?

Danke

Hallo Marian,

danke das hat geklappt.
Hast du ne Ahnung warum der Browser „.gif“ als Extension an
den Dateinamen hängt? Wegen des Content-Types?

das hängt etwas vom Browser ab. Normalerweise kannst du das Vorgeben mit dem Header „content-disposition“. Schau dir das mal in der Doku genauer an:

http://de2.php.net/header

Gruß Marian

Online-Kurse: www.lernpilot.de

Hallo Marian,

der Tip mit „Content-disposition“ war hilfreich.
So sieht also das funktionierende Skript aus:

header("Content-type: image/gif");
header("Content-disposition: inline; filename=redpixel.gif");
header("Content-length: 35");
echo chr(0x47),chr(0x49),chr(0x46),chr(0x38),chr(0x37),chr(0x61),chr(0x01),chr(0x00),chr(0x01),chr(0x00),chr(0x80),chr(0x00),chr(0x00),chr(0xff),chr(0x00),chr(0x00);
echo chr(0x00),chr(0x00),chr(0x00),chr(0x2c),chr(0x00),chr(0x00),chr(0x00),chr(0x00),chr(0x01),chr(0x00),chr(0x01),chr(0x00),chr(0x00),chr(0x02),chr(0x02),chr(0x44);
echo chr(0x01),chr(0x00),chr(0x3b);
?\>

Info’s zu Content-disposition:
http://www.ietf.org/rfc/rfc2183.txt

Danke & Gruß
Christian