Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML][JavaScript]Update zdjęć, odświeżanie strony
Forum PHP.pl > Forum > Przedszkole
koszelek
Witam,
Mam problem z małą aplikacją, której zadaniem jest podmienianie zdjęć:
Jest sobie katalog o nazwie images w nim 16 jpegów:
img1.jpg
img2.jpg
...
...
img16.jpg
Za pomocą php podmieniane są te fotki.
Struktura nigdy się nie zmienia tylko wygląd jpg.
Przeglądarki po upload ciągle pokazują tą samą fotkę.
Próbowałem czyszczenie cache w php, w meta tagach html. Próbowałem również podmienić zdjęcia w js - i to miało jakiś skutek, ale nie do końca (raz działało raz nie).
Mam nadzieję że ktoś spotkał się z takim problemem i jest w stanie mi pomóc.
Z góry dziękuje.
Wicepsik
A sprawdziłeś czy w tym folderze ze zdjęciami się zmieniły ?
koszelek
To nie ulega wątpliwości, ponieważ po kilkukrotnym odświeżeniu strony jest już ok.
Cel jest jasny - musi być od razu OK.
muniekw
Możesz np w JS napisać sobie funkcję, która będzie odświeżać stronę po załadowaniu zdjęć. Wydaje mi się, że mogło by pomóc dodanie do adresu strony ciągu (parametru) np. (reload="tak")
koszelek
Nie wiem czy to się czymś będzie różniło, bo robiłem już tą funkcję tylko z wykorzystaniem window.location="./mojastron"
Czasem nawet w pętli 4 nie dawało rady (nie powiem bo czasem i po pierwszym poszło).
muniekw
A spróbuj użyć np: takiej funkcji

Kod
<script type="text/javascript">
<!-- <![CDATA[
function odswiez() {
  if (location.search.indexOf("reload=tak") == -1) {
    znak = (location.search.indexOf("?") == -1)?"?":"&";
    setTimeout("location.href = location.href+znak+'reload=tak'", 2000);
  }
}
window.onload = odswiez;
// ]]> -->
</script>
koszelek
....hmmm
Nie do końca wiem jak użyć tej funkcji?
Może jeszcze jakaś mała wskazówka?

Ja to zrobiłem tak:
przekazuje z formularza ?reload=tak

w js sprawdzam:
Kod
if(getURLParam('reload')=='tak') { window.location="./manager.php";}

oczywiście mam napisaną funkcję 'getURLParam()'

Niestety to nie działa tak jak oczekuję - raz załapie innym razem już nie.

.... acha
W tym momencie się dopatrzyłem że tam jest wywołane ciągłe odświeżanie strony - tak też nie mogę zrobić .
muniekw
Ta funkcja tak naprawdę odświeża stronę po jej załadowaniu i odczekaniu określonego czasu, ale dzieje się to tylko raz.
zegarek84
Cytat(koszelek @ 30.07.2009, 12:18:56 ) *
Za pomocą php podmieniane są te fotki.
Struktura nigdy się nie zmienia tylko wygląd jpg.
Przeglądarki po upload ciągle pokazują tą samą fotkę.

przez zdanie, że struktura dokumentu pozostaje taka sama więc w dokumencie nie zmieniają się nawet adresy img??.. jeśli tak to tu musisz wyłączyć w przeglądarce buforowanie obrazków - jeśli z poziomu php to wyślij takie nagłówki wg wskazóweg tego co zacytuję (no ja raczej z kolei caszuje ;p - więc nie jestem pewien czy o jakimś nagłówku tu nie zapomnieli):
Cytat
Skrypty PHP często służą do generowania dynamiczej treści, która nie może być buforowana przez klienta czy serwer proxy. Pamięć cache (bufor) w większości tych urządzeń da się wyłączyć dzięki:
  1. <?php
  2. header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // data w przeszłości
  3. header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  4.                                                     // ciągle modyfikowany
  5. header("Cache-Control: no-store, no-cache, must-revalidate");  // HTTP/1.1
  6. header("Cache-Control: post-check=0, pre-check=0", false);
  7. header("Pragma: no-cache");                          // HTTP/1.0
  8. ?>

dodatkowo - ale nie chcesz zmieniać struktury dokumentu więc zapewne sam dokument keszujesz - mógłbyś się posłużyć czymś takim jak to niektórzy robią z js. (ostatni post - a jeśli html'a nie chcesz keszować w przegląedarce też to te nagłówki co podałem wyżej plus od początku temat z linku... - ale w zasadzie jeśli zmienisz tak adres obrazka to i dokument html za bardzo nie może być keszowany ;p):
http://forum.php.pl/index.php?showtopic=105194
koszelek
Ok, dzięki za pomoc.
Mogę tylko podkreślić że wykorzystałem jedyny działający u mnie sposób z dodaniem losowej liczby do nazwy pliku

Kod
<img src="images/img10.jpg?random=<?php echo rand() ?>" alt="" />
zegarek84
nie jedyny - nagłówki które podałem na 100% powinny zadziałać - dzięki nim przeglądarka nie powinna obrazków buforować - u Ciebie problem polegał zapewne w tym, że te obrazki już miałeś wczytane do przeglądarki - więc już są zbuforowane (a zabezpiecza się przed buforowaniem a nie kasuje bufor), więc musisz po prostu ręcznie usunąć wcześniej cache z przeglądarki... a aby dla każdego obrazka wynagłówki to musisz te obrazki wyświetlać przez skrypt php w którym dopiero wysyłasz i nagłówki i obrazek... aby obrazki miały "normalny" adres a nie rozszerzenie php to skożystaj z htaccess i przekierowania na skrypt php wszystkich obrazków z podaniem w parametrze np. ścieżki do pliku (najlepiej bez przekierowania 301 - ale to jak już tam wolisz)...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.