Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Ciasteczko "nie zaskakuje" po wysłaniu formularza (trzeba odświeżyć) - dlaczego?
-amrasi-
post
Post #1





Goście







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>
Go to the top of the page
+Quote Post
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


"Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE or $HTTP_COOKIE_VARS arrays."
Go to the top of the page
+Quote Post
-amrasi-
post
Post #3





Goście







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).
Go to the top of the page
+Quote Post
Damonsson
post
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


np. po ustawieniu ciasteczka: header('location...
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




setcookie("user", $imie, time()+3600*24*365);
$_COOKIE['user'] = $imie;

TAda....
Go to the top of the page
+Quote Post
-amrasi-
post
Post #6





Goście







A, już rozumiem.
Dzięki.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 13:15