Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][HTML] Co zrobić, aby po kliknieciu 'wstecz' pola pozostawały wypełnione, Nieudane wysyłanie formularza i przycisk wstecz
8rol
post 6.07.2010, 15:58:03
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 10.10.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
wiewiorek
post 6.07.2010, 16:09:16
Post #2





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


Więc zrobiłeś coś nie tak - pokaż kod smile.gif
Go to the top of the page
+Quote Post
8rol
post 6.07.2010, 16:35:57
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 10.10.2009

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post
wiewiorek
post 6.07.2010, 16:52:19
Post #4





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


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']; ?>" />


Ten post edytował wiewiorek 6.07.2010, 16:52:38
Go to the top of the page
+Quote Post
8rol
post 6.07.2010, 16:59:28
Post #5





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 10.10.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
tehaha
post 6.07.2010, 17:01:39
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


bo musisz dla każdego pola zapisać dane do sesji a potem odczytać z sesji, a tego nie zrobiłeś
Go to the top of the page
+Quote Post
wiewiorek
post 6.07.2010, 17:03:15
Post #7





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował wiewiorek 6.07.2010, 17:04:30
Go to the top of the page
+Quote Post
8rol
post 7.07.2010, 12:23:12
Post #8





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 10.10.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował 8rol 7.07.2010, 12:23:57
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:57