Problém

Udělal jsem si malou fotogalrii, když vložím obrázek uloží se příkladem do adresáře images/1.jpg když obrázek smažu a vložím znovu jiný, který mi script uloží pod stejným jménem a otevřu stránku kde se fotky zobrazují, tak se tam objeví ten starej smazanej a ne ten novej vloženej. Musím kliknout na aktualizovat a pak se změní.

Neví někdo jak tomu zamezit? Zkoušel jsem meta tagy ale bez úspěchu.
Zkus to poslat v zahlavi HTTP.

header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Expires: Wed, 19 Jul 2000 02:13:22 GMT");
header("Last-Modified: " . date("D, d M Y H:i:s"));
CTR+F5 ?
PEtr: On chce prave vyresit to, aby ctrl+f5 nemusel mackat. Musis si to poradne precist.
Sojka:

Aha, vzpomínám, tento problém jsem taky kdysi řešil.
<HTML>cache nevypinej, to je reseni naprd a akorat zpusobis zbytecny taffic uzivatelum + zpomalis load...

ja tohle resil zpusobem kombinaci s databazi (muzes pouzit i soubory, nebo vyuzit cteni seznamu souboru pres adresarove funkce)

jde o to, ze obrazky neukladam jen jako: $ID.".jpg", ale pridam k tomu hash funkce md5() z casu vracenym funkci time()
cili: $filename = $ID."_".md5(time()).".jpg"; tento hash pak ulozim do databaze jako jmeno souboru s tim, ze pri kazdem dalsim uploadu se vygeneruje novy hash a kazdy prohlizec to pak povazuje "spravne" za novy obrazek...
podoba je pak napr. nasledujici: 2_1100844949419d8f95d88b2.jpg

je to sice slozitejsi reseni nez vypnout cache ale jiste se ti to vrati</HTML>
Jo o něčem podobném jsem přemýšlel... jen, je nutné tam dávat MD5(); ?
nestačí jen ten time(); ? Ten je logicky taky pokaždý jiný..

Jen mě ještě napadá jak to vyřešit, když tohle budu chtít použít v systému, kde ty názvy neukládám do databáze. Při načítání stránky zjišťuji zda obrázek existuje pomocí File_Exists(); pak teprve zobrazuji. Da se zbytek řetězce v podmínce nahradit '%'?
Něco jako:
if (File_Exists($id."_".%.".jpg"))
nevím zda jsem to napsal dobře...
nebo do zdrojáku dát echo '<img src="'.$id.'.jpg&cas='.filemtime($id.'.jpg').'" width="..." height="...">';
Prostě předávat jako parametr v tý cestě čas změny souboru, takže když se parametr změní, prohlížeč načítá znova. Jako by to byla jiná stránka. A soubor se pořád může jmenovat stejně.
jseš si jistý že tohle je 100%ntní ?
<HTML>ne to md5 je tam vicemene zbytecne, je to jen na pohled ;)
je to jen demonstrace o unikatnim nazvu (kterou zvladne i uniqid() nebo time() sam) pro pripad ze nazvy ukladat nechces, pujde to napr:

function obrazek($nazev, $adresar = "image/") {
$d = dir($adresar);
while (false !== ($entry = $d->read())) {
if (substr($entry, 0, strlen($nazev)) == $nazev) return $entry;
}
$d->close();
return FALSE;
}

echo "Cely nazev obrazku je: ".obrazek("mojefotka"); // demonstrace</HTML>
Tenhle způsob se mi ale zdá jednodušší
<img src="'.$id.'.jpg&cas='.filemtime($id.'.jpg').'" width="..." height="...">';

odzkoušim to a pokud to bude makat tak sáhnu po něm.

Jinak díky za rady