Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]COOKIES w PHP - problem z odczytem, Nie chodzi o $_COOKIE[] - troszke bardziej zlozony problem.
lepmajster
post
Post #1





Grupa: Zarejestrowani
Postów: 129
Pomógł: 24
Dołączył: 21.05.2010

Ostrzeżenie: (30%)
XX---


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?

Ten post edytował lepmajster 21.09.2010, 15:31:46


--------------------
Naciśnij POMÓGŁ, jeśli mój post był pomocny :)
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




$_COOKIE którą ustawileś jest dostępne dopiero po odświeżeniu strony. Łatwiej Ci będzie użyć sesji


--------------------
Go to the top of the page
+Quote Post
lepmajster
post
Post #3





Grupa: Zarejestrowani
Postów: 129
Pomógł: 24
Dołączył: 21.05.2010

Ostrzeżenie: (30%)
XX---


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?


--------------------
Naciśnij POMÓGŁ, jeśli mój post był pomocny :)
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.


--------------------
Go to the top of the page
+Quote Post
Dapi
post
Post #5





Grupa: Zarejestrowani
Postów: 186
Pomógł: 13
Dołączył: 7.08.2009

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


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


--------------------
www.dapi.net.pl - Wiele technologii, jedna pasja.
Go to the top of the page
+Quote Post
lepmajster
post
Post #6





Grupa: Zarejestrowani
Postów: 129
Pomógł: 24
Dołączył: 21.05.2010

Ostrzeżenie: (30%)
XX---


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.

Ten post edytował lepmajster 21.09.2010, 17:23:32


--------------------
Naciśnij POMÓGŁ, jeśli mój post był pomocny :)
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 Aktualny czas: 19.08.2025 - 12:55