Cache-Problem bei Bilder-Upload

  • Hallo
    bin nach langem auch mal wieder mit einem Problem hier ...


    mit einem Formular lasse ich ein Bild uploaden,
    speichere es mit move_uploaded_file() was auch funktioniert
    und zeige es nachher mit <img src="pfad/bild.jpg" .../> zum Bestätigen an.


    Nun kommt der Fehler: Es wird das zuvor mit gleichem Namen gespeicherte Bild angezeigt.
    Der Name ist immer gleich, weil er aus Daten eines Mitarbeiters abgeleitet wird,
    zB: "MeierAntonBild.jpg"
    Nach einem Refresh$/Aktualisieren wird dann das richtige Bild angezeigt, aber das möchte ich dem Admin der Web-Site nicht zumuten.


    Diese Meta-Tags verwende ich:
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="cache-control" content="no-cache">


    Ansonsten funktioniert alles wunschgemäss.
    Upload und Anzeige erfolgen im gleichen PHP-Script und im gleichen Durchlauf.


    Danke für nützliche Tipps!

    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester


    Motto'06: Mut zur deutschen Sprache!

  • Hallo 321,


    setz mal diesen Header mit in's PHP Script (ganz oben)

    PHP
    1. header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
    2. header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
    3. header( "Cache-Control: no-store, no-cache, must-revalidate" );
    4. header( "Cache-Control: post-check=0, pre-check=0", false );
    5. header( "Pragma: no-cache" );
  • Hallo Daniel


    an sowas dachte ich auch schon (fortl. Nummer).
    Habs aber nun so gemacht, dass der Filename genommen wird!
    Ladet dann einer nach Verwerfen der Vorschau nochmals das gleiche Bild hoch, dann störts ja nicht, dass es im Cache ist.


    übrigens:
    echo '<img src="pfad/bild.time().$ext.'">'; // wäre quick and cleaner :)

    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester


    Motto'06: Mut zur deutschen Sprache!

  • Habs aber nun so gemacht, dass der Filename genommen wird!
    Ladet dann einer nach Verwerfen der Vorschau nochmals das gleiche Bild hoch, dann störts ja nicht, dass es im Cache ist.


    ? Ich denke es war Dein Ausgangsproblem, dass es eben doch stört?


    Zitat

    übrigens:
    echo '<img src="pfad/bild.time().$ext.'">'; // wäre quick and cleaner :)


    Nee, das klappt im Leben nicht. ;)

  • ? Ich denke es war Dein Ausgangsproblem, dass es eben doch stört?


    Nee, das klappt im Leben nicht. ;)


    Das Problem war, dass wenn ein bild verworfen wird und ein anderes gewählt wird, es wieder denselben Namen bekommt, was eben ein Aktualisieren erfordert. Nun wo ich den echten Bildnamen verwende ist dem nicht mehr so.
    Wenn einer versehentlich verwirft und dann wieder das gleiche bild wählt, spielts wirklich keine Rolle.


    Was klappt im Leben nicht, wenn ich den Dateinamen statt die Extension um den Timestamp erweitern würde. Mit verfälschter Extension wäre wohl für kluge wie dumme Browser (Gruss nach Bln) Ende der Fahnenstange!

    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester


    Motto'06: Mut zur deutschen Sprache!

  • echo '<img src="pfad/bild.time().$ext.'">'; // wäre quick and cleaner


    Da klappt im Leben nicht, dass die Funktion time ausgeführt und die Variable $ext ersetzt wird. Du hast den String mittels Hochkommas umschlossen, der dazu führt, dass immer nach einem Bild mit dem Namen pfad/bild.time().$ext. gesucht wird, was es ja nicht gibt. Die Variablen werden nicht durch ihre Werte ersetzt. ;)