PHP Image mit PNG Endung

ZockerLordLP

Erfahrenes Mitglied
Hallo Community.

Ich habe Bild mit PHP erstellt und immer aktuelle Daten. Da ich diese Bilder auch in Foren mit dem Image Tag einbinden will brauche ich irgendwie eine .png Endung, da es sonst nicht erkannt wird.

Wie kann ich es am besten lösen? Per Htaccess?
Das Bild rufe ich so auf:

foo.com/?bild=randomstring
 
du könntest mittels htaccess oder besser gesagt mittels mod_rewrite dies lösen.
Die einfachste Methode wäre:
Code:
RewriteEngine On
RewriteRule ^([^/]*)\.png$ /?bild=$1 [L]

Dies macht ein rewrite von foo.com/randomstring.png nach foo.com/?bild=randomstring.
Wenn allerdings mehrere Dateien in dieser Ebene liegen kann das dazu führen, dass diese Bilder nicht mehr angezeigt werden.

Da wäre diese Version vielleicht etwas besser:
Code:
RewriteEngine On
RewriteRule ^bild/([^/]*)\.png$ /?bild=$1 [L]
Diese nimmt den Variablennamen noch mit rein. (rewrite von foo.com/bild/randomstring.png nach foo.com/?bild=randomstring.)
Da müsstest du nur aufpassen, dass du kein Ordner hast der sich bild nennt.
 
[...]brauche ich irgendwie eine .png Endung, da es sonst nicht erkannt wird.

Wie kann ich es am besten lösen? Per Htaccess?
Das Bild rufe ich so auf:

foo.com/?bild=randomstring

Hi ZockerLordLP,

Ich würde hier nicht mit htaccess rumpfuschen, sondern das sauber über den Content-Type lösen.

Die Datei-Endung ist optional, das sollte keinen Einfluss darauf haben ob dein Bild angezeigt wird oder nicht. Wichtiger sind auf alle Fälle die Header, hier vorallem der Content-Type.

Schreibe in dein PHP-Script, welches das PNG generiert direkt vor der Ausgabe des Bildes folgendes rein:
PHP:
header("Content-Type: image/png");

Der Header sagt dem Browser, was er jetzt bekommt und somit kann er das Bild anzeigen. Der Header ist auch im Beispiel zur http://de.php.net/function.imagepng]imagepng() angegeben.

Grüße,
BK
 
Einerseits das was Bratkartoffel schreibt stimmt.
Andersteits gibts manchmal Foren etc. die auf Endung .png prüfen, wenn man beispielsweise ein Bild in eine Signatur binden will.

Dann macht man am besten ein eigenes Verzeichnis. In dieses Verzeichnis kommt deine PHP-Datei mit einer .png Endung

Noch ein .htaccess um dem Server mitzuteilen, dass .png-Dateien in diesem Verzeichniss mit PHP geparst werden müssen
Code:
AddType application/x-httpd-php .png
 
Einerseits das was Bratkartoffel schreibt stimmt.
Andersteits gibts manchmal Foren etc. die auf Endung .png prüfen, wenn man beispielsweise ein Bild in eine Signatur binden will.

Dann macht man am besten ein eigenes Verzeichnis. In dieses Verzeichnis kommt deine PHP-Datei mit einer .png Endung

Noch ein .htaccess um dem Server mitzuteilen, dass .png-Dateien in diesem Verzeichniss mit PHP geparst werden müssen
Code:
AddType application/x-httpd-php .png

Da wäre ich gaaanz vorsichtig:
Wenn du Bilder durch den PHP-Parser lässt, dann läufst du Gefahr, dass die Benutzer manipulierte Bilddateien hochladen. Bei fast jedem Format gibts einen Kommentar, der 1:1 so im Bild irgendwo in den Binärdaten steht. Gibt eine schöne Sicherheitslücke, spreche da aus Erfahrung...
https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/

Grüße,
BK
 
Nene, sowas sollte man natürlich nicht in einem Upload-Folder machen. Nur auf den Eigenen Webspace in einem abgesonderten Ordner.
Dann für Eine Signatur das Bild verlinken....
Fremde (user) dürfen niemals png-php Dateien hochladen. Das wäre katastrophal.
 

Neue Beiträge

Zurück