Witam!
Jak zapobiec ponownemu przesłaniu pliku na stronę, która odbiera dane z formularza? Dla formularzy bez pola <input type="file"> postępowałem w następujący sposób:
1. Wysłanie formularza ze zmiennymi $_POST i flagą wypełnionego formularza
2. Serializacja $_POST przez skrypt odbierający, przed wysłaniem nagłówka
3. Wysłanie nagłówka z przekierowaniem przez Location ponownie do tego samego skryptu i wyzerowanie flagi wypełnionego formularza (żeby nie przekierować po raz kolejny)
4. Deserializacja $_POST i sytuacja wygląda tak jakby właśnie został wysłany formularz, a przeglądarka nie próbuje ponownie wysyłać danych dzięki wykonanemu przekierowaniu
Teraz pytanie jak to samo zrobić z zawartością $_FILES ? Albo jak inaczej zabezpieczyć się przed ponownym wysyłaniem plików przez przeglądarkę przy nawigacji dalej-wstecz?
Sądziłem, że serializacja $_FILES wystarczy, bo plik tymczasowy pozostanie dalej tam gdzie był załadowany, a serializowane $_FILES przechowa wszystkie parametry. Tymczasem $_FILES po deserializacji jest zawsze puste, nie wiem dlaczego.
Teraz zabezpieczam się tak, że zapisuję w sesji nazwy już odebranych plików i jak się powtórzy to wyświetlam komunikat. Ale oczywiście niepotrzebne przesyłanie ma nadal miejsce, a zabezpieczenie jest mało optymalne.
Czy ktoś wie jak się rozwiązuje taki problem?