Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]COOKIES w PHP - problem z odczytem
Forum PHP.pl > Forum > Przedszkole
lepmajster
Witam
Mam problem z cookies, mianowicie ustawiam sobie ciacho i kilka linijek nizej odczytuje je, ale wartosc ustawionego ciacha dopiero jest odczytywana po drugim przeladowaniu strony - da sie to jakos obejsc?
O to moj kod:
  1. $iloscDni = 365;
  2. if($_GET['akcja']=='tak'){
  3. setcookie("action", "yes", time()+60*60*24*$iloscDni); // tworze ciacho
  4. }elseif($_GET['akcja']=='nie'){
  5. setcookie("action", "yes", time()-60*60); // kasuje ciacho
  6. }
  7. .....
  8. .....
  9. .....
  10. if($_COOKIE['action']=='yes'){
  11. echo "Ciacho ustawione<br />";
  12. echo "<a href='?akcja=nie'>usun ciastko</a>";
  13. }else{
  14. echo "Brak ciastka<br />";
  15. echo "<a href='?akcja==tak'>Utworz ciastko</a>";
  16. }


No i w tym przykladzie powiedzmy ze klikne na link Utworz ciastko, strona sie przeladuje, ale napis nadal bedzie brzmial "Brak ciastka", dopoki ponownie nie przeladuje strony, np. recznie.
Czy tak musi byc i czy da sie jakos wymusic, aby ciastko dalo sie czytac odrazu po utworzeniu, za jednym przeladowaniem?
wookieb
$_COOKIE którą ustawileś jest dostępne dopiero po odświeżeniu strony. Łatwiej Ci będzie użyć sesji
lepmajster
Wlasnie o to chodzi, ze nie moge uzyc sessji, bo sa czyszczone przez wordpressa :/
Juz myslalem ze dam rade na ciastkach, a tu znowu lipa...
Kurde nie ma jakiegos sposobu, aby zmusic cookie do natychmiastowego utworzenia?
wookieb
Więc rozszerz problem "czyszczenia" sesji przez wordpressa.
Druga opcją jest np coś takiego
  1. $ciasteczka = $_COOKIE;
  2. etcookie("action", "yes", time()+60*60*24*$iloscDni); // tworze ciacho
  3. $ciasteczka['action'] = 'yes';

Tylko że to mało eleganckie.
Dapi
A nie możesz w ten sposób:

  1. $iloscDni = 365;
  2. if($_GET['akcja']=='tak'){
  3. $akcja = 'yes';
  4. setcookie("action", "yes", time()+60*60*24*$iloscDni); // tworze ciacho
  5. }elseif($_GET['akcja']=='nie'){
  6. setcookie("action", "yes", time()-60*60); // kasuje ciacho
  7. }
  8. .....
  9. .....
  10. .....
  11. if($akcja=='yes'){
  12. echo "Ciacho ustawione<br />";
  13. echo "<a href='?akcja=nie'>usun ciastko</a>";
  14. }else{
  15. echo "Brak ciastka<br />";
  16. echo "<a href='?akcja==tak'>Utworz ciastko</a>";
  17. }



questionmark.gif
lepmajster
Hehe jesli to zadziala to super, ze tez nie pomyslalem o taki prostym rozwiazaniu - przypisac recznie wartosc podczas tworzenia ciacha, jakies to proste smile.gif
A co do czyszczenia sessji, coz nie wiem jak oni to czyszcza, ale fakt jest taki ze nie da sie utworzycz wlasnej sessji w wp - jedynie mozna w pluginach, ale przeciez nie bede tworzy pluginu dla takiej pierdolki.
Ogolnie problem jest znany i nie ma na to rozwiazania (sessje w wp), pytalem na oficjalnym forum wordpressa i uslyszalem to co teraz napisalem.
Dzieki za pomoc, lece sprawdzic.

Cytat(Dapi @ 21.09.2010, 16:43:26 ) *
A nie możesz w ten sposób:

  1. $iloscDni = 365;
  2. if($_GET['akcja']=='tak'){
  3. $akcja = 'yes';
  4. setcookie("action", "yes", time()+60*60*24*$iloscDni); // tworze ciacho
  5. }elseif($_GET['akcja']=='nie'){
  6. setcookie("action", "yes", time()-60*60); // kasuje ciacho
  7.  
  8.  
  9. }
  10. .....
  11. .....
  12. .....
  13. if($akcja=='yes'){
  14. echo "Ciacho ustawione<br />";
  15. echo "<a href='?akcja=nie'>usun ciastko</a>";
  16. }else{
  17. echo "Brak ciastka<br />";
  18. echo "<a href='?akcja==tak'>Utworz ciastko</a>";
  19. }



questionmark.gif

Tak nie moge, bo gdy zmienie strone (nie bedzie ?akcja=tak) to juz to nie zadziala.
Po to wlasnie robie to na ciastkach, zeby bez wzgledu na jakiej podstronie bede, nadal bedzie ustawiona dana opcja, a w twoim przypadku bedzie to dzialac dopoki $_GET['akcja'] bedzie rowna 'tak'.

Zrobie tak jak mowi Wookieb - ustawie recznie $_COOKIE['action']='yes'; podczas tworzenia ciastka, a ze malo eleganckie, to mnie nie interesuje biggrin.gif
Pozniej napisze czy dziala, bo teraz wrzucaja sie pliki na serwer :]

DZIALA Wookieb winksmiley.jpg leci POMOGL.
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.