Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ciasteczko "nie zaskakuje" po wysłaniu formularza (trzeba odświeżyć) - dlaczego?
Forum PHP.pl > Forum > Przedszkole
amrasi
Witam,
Stworzyłem prosty skrypt oparty jedynie o ciasteczka i formularz, który generalnie polega na tym, że skrypt prosi o wpisanie imienia, po czym imię jako zmienna wysyłane jest POST'em do ciasteczka i odtwarzane z niego (wtedy formularz znika i pojawia się opcja, aby zmienić imię).

Problem polega na tym - i nie rozumiem dlaczego tak się dzieje - iż po tym, jak daję wysyłanie - ciasteczko "nie zaskakuje" i aby zadziałało muszę np. odświeżyć stronę.

Dlaczego tak się dzieje i jak to zmienić/co zmienić aby działało? (Jakiś czas temu tworzyłem skrypt o podobnej mechanice, który musiałem zaimplementować na stronę i miałem ten sam problem).

Oto kod skryptu:

  1. <?php
  2. if(isset($_POST['zmien']))
  3. {
  4. setcookie("user", "", time()-3600);
  5. unset($_POST['zmien']);
  6. unset($_POST['imie']);
  7.  
  8. }
  9.  
  10. if(isset($_POST['imie']))
  11. {
  12. $imie = $_POST['imie'];
  13. setcookie("user", $imie, time()+3600*24*365);
  14. }
  15. ?>
  16. <!DOCTYPE html>
  17. <html lang="pl">
  18. <head>
  19. <meta charset="utf-8" />
  20.  
  21. </head>
  22. <body>
  23.  
  24. <?php
  25. if(isset($_COOKIE['user']))
  26. {
  27. echo "Witaj na stronie " . $imie . "<br />";
  28. echo '<form action="1.php" method="post">
  29. <input type="submit" name="zmien" value="Zmień imię">
  30. </form>';
  31. }
  32. else
  33. {
  34. echo 'Witaj nieznajomy. Na początek wpisz swoje imię.<br><br>';
  35. echo '<form action="1.php" method="post">
  36. Twoje imię:<input type="text" name="imie" />
  37. <input type="submit" />
  38. </form>';
  39. }
  40. ?>
  41.  
  42. </body>
  43. </html>
Damonsson
"Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE or $HTTP_COOKIE_VARS arrays."
amrasi
Rozumiem. W takim razie jak najprościej zmodyfikować, aby po wysłaniu formularza bezproblemowo "załapało" cookie?

Wiem, że jest na to parę sposobów, ale chodzi mi o najprostszy, zakładając, że formularz i efekt będą znajdować się na tej samej stronie (w moim przypadku 1.php).
Damonsson
np. po ustawieniu ciasteczka: header('location...
nospor
setcookie("user", $imie, time()+3600*24*365);
$_COOKIE['user'] = $imie;

TAda....
amrasi
A, już rozumiem.
Dzięki.
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.