Stefan: Upload eines Bildes

Ich habe ein Problem mit dem Bildupload. Ich teste es auf einem lokal installierten Apache. Hier zunächst einmal das Formular:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
  <title>Dateiupload</title>
</head>
<body>
   <form action="action.php" method="post" enctype="multipart/form-data">
     <input type="file" name="test">
     <input type="submit" value="Abschicken">
  </form>
</body>
</html>

Jetzt die Datei "action.php":

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
  <title>Dateiupload</title>
</head>
<body>
<?php
if ($test_type != "image/jpeg") print "Datei muss im JPG-Format vorliegen";
else {
  copy ($test,"images/test.jpg");
  print "<img src="images/test.jpg" alt="Test">";
}
?>
</body>
</html>

Das Problem ist jetzt folgendes: Wenn ich das jezuz so ausführe, dann klappt das beim ersten mal. Wenn ich jetzt aber mit dem "<-"-Knopf des Browesers auf das Formular zurück gehe und ein neues Bild auswähle, wird trtzdem noch das alte Bild angezeigt, obwohl im Verzeichnis "images" das richtige Bild liegt (getestet mit Konqueror 3.0.1 und Netscape 4.79). Offensichtlich holt sich der Browser das Bild aus dem Browsercache. Kann man das irgendwie verhindern?

  1. Huhu Stefan

    vielleicht hilft es ja schon wenn Du  das Bild doch unter seinem 'richtigem' Namen speicherst.

    also
    $tmp='images/'.$test_name;
    copy ($test,$tmp);
    printf ('<img src="%s" >',$tmp);

    Viele Grüße

    lulu

    1. Nochmal huhu Stefan,
      und außerdem hallöchen Lulu,

      vielleicht hilft es ja schon wenn Du  das Bild doch unter seinem 'richtigem' Namen speicherst.

      also
      $tmp='images/'.$test_name;
      copy ($test,$tmp);
      printf ('<img src="%s" >',$tmp);

      Nö, das macht ja keine Unterschiede, außer dass der Benutzer nun den Namen bestimmt. Da muss man aufpassen, dass man keine ausführbaren Endungen zulässt (php, phtml, php3,...). Den Mime-Type kann man nämlich fälschen.

      Das Problem liegt nicht bei PHP sondern auf dem lokanen Platz (HTML, Metatags expires content=0). Er holt aber sich tatsächlich das Bild aus dem lokalen Cache, weil mit [zurück] nicht neu geladen wird. Nur mit [aktualisieren]

      Gruß

      Tom

      1. Hi zusammen,

        Er holt aber sich tatsächlich das Bild aus dem lokalen
        Cache, weil mit [zurück] nicht neu geladen wird.
        Nur mit [aktualisieren]

        nicht mal dann - je nach Browser-Einstellungen.

        Wenn da konfiguriert ist "nie prüfen", dann hilft nicht
        mal "Aktualisieren"; bei Netscape muß man dann auf
        Shift + Reload "verschärfen", bei M$IE auf Cntrl + F5.

        Man kann dem Benutzer nun mal nicht alles vorschreiben.

        Viele Grüße
        <img src="http://www.schroepl.net/projekte/gzip_cnc/gzip_cnc.gif" border=0 alt=""> Michael