Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] Co zrobić, aby po kliknieciu 'wstecz' pola pozostawały wypełnione
Forum PHP.pl > Forum > Przedszkole
8rol
Witam.

Zauważyłem, że w niektórych skryptach po błędnym wypełnieniu formularza możemy kliknąć w przeglądarce 'wstecz' i poprzednio wpisane dane nadal będą się tam, znajdować, bez potrzeby wpisywania wszystkiego od początku.

Napisałem swój własny formularz kontaktowy w oparciu o sesje (zabezpieczenie przed botami), jednak w moim wypadku bo kliknięciu 'wstecz' formularz jest pusty.
wiewiorek
Więc zrobiłeś coś nie tak - pokaż kod smile.gif
8rol
Wiadomo - trochę po upraszczałem niektóre rzeczy, chodzi o to, aby pokazać, że uzupełniając formularz dowolnymi danymi i klikając 'wstecz' staje się on pusty.



  1. <?php
  2.  
  3.  
  4. if (isset($_POST['send'])) {
  5.  
  6. // kliknieto przycisk, aby wyslac
  7.  
  8.  
  9. if (!empty($_POST['odp']) && ($_POST['odp'] == $_SESSION['odp']) ) {
  10. echo 'wysylanie';
  11.  
  12. }
  13. else {
  14. echo 'zla odpowiedz';
  15.  
  16. }
  17.  
  18. }
  19. else {
  20. // zwykle wejscie
  21.  
  22. $_SESSION['wynik'] = 'xxx';
  23.  
  24.  
  25. <form action="ses.php" method="post">
  26. <table>
  27.  
  28. <tr><th>temat</th><td><input type="text" name="temat" /></td></tr>
  29. <tr><th>wiadomosc</th><td><textarea rows="12" cols=20" name="wiad"></textarea></td></tr>
  30. <tr><th>email</th><td><input type="text" name="email" /></td></tr>
  31. </table>
  32.  
  33. <p><input type="text" name="odp" /> </p>
  34.  
  35.  
  36. <p class="submit"><input type="submit" name="send" value="send" /></p>
  37. </form>';
  38.  
  39. }
wiewiorek
A gdzie zapisujesz do sesji wartości z formularza ?
np.
  1. $_SESSION['wynik'] = $_POST['odp'];


A w samym formularzu przecież też musisz nadać wartość polom, które mają mieć wartość z sesji:
  1. <input type="text" name="odp" value="<?php if(isset($_SESSION['wynik'])) echo $_SESSION['wynik']; ?>" />
8rol
Po prostu poucinałem te fragmenty w kodzie.
Formularz może przecież zwracać zawsze błąd, to tam nie jest ważne, chodzi o to, dlaczego po samym kliknięciu wstecz nie ma wpisanych wartości.

Co ciekawe, pod Operą i Chrome działa dobrze, pod FF i IE nie.
tehaha
bo musisz dla każdego pola zapisać dane do sesji a potem odczytać z sesji, a tego nie zrobiłeś
wiewiorek
Czyli twierdzisz, że masz to co napisałem i że wyrzuciłeś je z powyższego kodu - czyli wyrzuciłeś to co najistotniejsze tongue.gif Trudno znaleźć przyczynę jeśli nie chcesz pokazać całości kodu - zwłaszcza jego najistotniejszych fragmentów. smile.gif
8rol
Zmyliło mnie to, że niektóre przeglądarki (Opera, Chrome) zapamiętywały te wartości. Co zasugerowało mi, że problem leży bardziej po stronie przeglądarki i ewentualnego kodu HTML.

Oczywiście, wiedziałem o możliwości zapisywania i odczytywania z sesji, ale wydawało mi się to nieco na około, ale z tego co widać innego wyjścia nie ma.


Dzięki winksmiley.jpg

----- EDIT -----

Teraz jednak pojawił się nowy problem...

Powiedzmy, że po poprawnym wysłaniu wiadomości wszystkie zmienne sesyjne będą niszczone, aby po ponownym wejściu pola były już czyste.

Jednak, gdy użytkownik wypełni pola jakimiś danymi, kliknie wysyłanie formularza, skrypt zwróci komunikat, że np. wysyłanie nie powiodło się z powodu nie wypełnienia wszystkich pól. Następnie użytkownik wróci sobie na stronę główną, a potem ponownie do formularza kontaktowego to jego stare dane nadal będą się tam znajdować.


Jak rozwiązać ten problem? Nie mogę przecież niszczyć sesji nawet po nieudanym wysyłaniu bo wtedy po kliknięciu 'wstecz' pola znowu będą puste.
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.