phpbar.de logo

Mailinglisten-Archive

[php] imagedestroy() mag nicht

[php] imagedestroy() mag nicht

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mon Nov 21 21:53:20 CET 2005


Hi Lennart,

Am Montag, 21. November 2005 21:41 schrieb Lennart Droste:
> deutschsprachige PHP-Mailingliste <php at phpbar.de> schrieb am 21.11.05 
20:54:18:
> > Ja. Du darfst das Bild nicht mit demselben PHP-Skript löschen, mit dem Du
> > den HTML-Code auslieferst. Es gibt da diverse Möglichkeiten. Ein Ansatz
> > wäre, es die Webbug-Methode (http://de.wikipedia.org/wiki/Webbug)
> > einzusetzen.
>
> Ok, das hat gedauert zu verstehen wie ich es programmieren sollte. Ich rufe
> jetzt in meinem ersten Skript nurnoch eine weitere php-Datei auf, die
> letztenendes das Vorschaubild erstellt. Löschen tut die ursprüngliche Datei
> ganz am Ende die Vorschaubilder dann. Mein Problem ist jetzt nur, dass das
> Vorschauskript kein Bild mehr ausgibt.

[...]

> Ich habe das Bild erstellt und öffne es nun, sage dem Browser "hier kommt
> ein jpg" und schicke ihm dann die gesamten Daten rüber. Wieso zeigt er mir
> es dann nicht an? Sicherlich habe ich etwas übersehen, aber was?

ich bin mir nicht ganz sicher, aber ich glaube, Du hast es nicht so umgesetzt, 
wie ich es gemeint habe. Ich hatte mir das mit der Webbug-ähnlichen Lösung 
wie folgt gedacht:

Dein ursprüngliches PHP-Skript läßt Du so, wie es ist. Du entfernst nur das 
Löschen der temporären Bilddatei. Diese Löschfunktion lagerst Du in eine 
eigene PHP-Datei aus. Die wiederum rufst Du nach dem Webbug-Verfahren am Ende 
der HTML-Datei aus, die Du mit Deinem ursprünglichen PHP-Skript generierst, 
z.B. so:

   ....
   <img src="loesche_tmp-bild.php?bildname=xy_tmp.jpg" width="1" height="1" />
  </body>
</html>

Was Du noch prüfen müßtest, ob dieses Verfahren immer bei allen Browsern 
zuverlässig funktioniert. Ansonsten mußt Du eine andere Lösung finden bzw. 
eine ergänzende Lösung, z.B. alle 30 Minuten das tmp-Verzeichnis per Cronjob 
aufräumen.


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive