Bardzo częstym problemem na który natrafiają początkujący programiści PHP jest problem ponownego wysłania danych po odświeżaniu strony do której zostały przesłane dane z formularza HTML. Jeżeli nasz skrypt dodaje dane z formularza do bazy danych to po odświeżeniu strony zwyczajnie je doda jeszcze raz. Możemy ten problem bardzo łatwo rozwiązać za pomocą sesji oraz bardzo prostej funkcji PHP:
W powyższej funkcji generujemy 32-znakowy unikalny hash przemnażając czas razy losową liczbę uzyskując w ten sposób unikalny identyfikator, który przypiszemy do naszego wysłanego formularza.
Następnie w formularzu dodajemy następującą ukrytą linię:
Wywołuje ona naszą funkcję wysyłając w zmiennej hash nasz unikalny klucz.
A tak wygląda plik, który odbiera dane z formularza:
Jeżeli zmienna sesyjna adduser nie istnieje lub jest różna od przesłanej zmiennej hash z formularza to skrypt tworzy taką zmienną sesyjną i wykonuje wszystkie czynności jakie powinien zrobić po prawidłowym wysłaniu formularza. Jeżeli natomiast taka zmienna istnieje i jest równa zmienna hash z formularza tzn. że ten formularz był już wysłany.
Brak komentarzy:
Prześlij komentarz