Upload form + refresh

0

Witam. Mam drobny problem z odświeżaniem strony po wrzuceniu plików przez upload form. Dajmy na to; wrzucę wszystkie pliki - zostają one zapisane (kod się wykonuje bez problemu). Natomiast w momencie, gdy chcę odświeżyć stronę (forma + upload w tym samym pliku), otrzymuję błąd z następującą informacją:

This webpage requires data that you entered earlier in order to be properly displayed.
You can send this data again, but by doing so you will repeat any action this page previously performed.

Error code 400 (net::ERR_CACHE_MISS)

Odświeżanie JS działa bez zarzutu. A sam kod wygląda mniej więcej tak:

if(!empty($_FILES['upload']) && $_SERVER['REQUEST_METHOD'] == 'POST')
{
	foreach($_FILES['upload']["name"] as $f => $name)
	{
		//operacje na plikach..
	}
	echo '<form>
		<input type="button" onClick="history.go(0)" value="Refresh">
	</form>';
}
else
{
	echo '<form method="post" enctype="multipart/form-data">
		Files: <input id="files" name="upload[]" type="file" multiple="multiple" accept="image/*"></br>
		<input type="submit">
		<div id="selectedFiles"></div>  
	</form>';
}

Próbowałem już 'unsetować' $_FILES, jednak bez większego rezultatu. Problem występuje w dalszym ciągu.

Dzięki za wszelką pomoc. Pozdrawiam.

1

To jest sprawa przeglądarki (Chrome). Nie ma NIC wspólnego z kodem PHP czy jakimkolwiek innym kodem. Odświeżając stronę przez F5 po submitowaniu formularza spowodowałbyś ponowne wysłanie tych samych plików, przeglądarka Cię przed tym uchrania (na stronach sklepów często są takie kwiatki i np. dodajesz coś do koszyka, albo co gorsza - potwierdzasz zamówienie, strona coś się nie wczytuje, albo po prostu chcesz ją odświeżyć - dajesz "odśwież" i masz 2x przedmiot w koszyku, albo sklep dostaje podwójne zamówienie!).

Co ciekawe - oczekiwałbym, że Chrome ma tam jakiś przycisk "Potwierdź", "Tak, rozumiem" albo podobne (wszystkie przeglądarki jakiś czas (oprócz Opery 12) taki komunikat wyświetlały).

Jak to obejść? Po przetworzeniu plików KONIECZNIE zrób redirect (Location) na jakąś stronę z podsumowaniem wysyłania plików. Odświeżając wtedy - odświeżasz stronę, na którą przekierowałeś,

0

Yh. Troche niewłaściwie zadałem pytanie; no nawet go nie zadałem.. ale w pełni opisałeś mi metodę naprawy tego problemu. Dzięki wielkie. (:

1 użytkowników online, w tym zalogowanych: 0, gości: 1