Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Cookie
propage
post
Post #1





Grupa: Zarejestrowani
Postów: 330
Pomógł: 0
Dołączył: 25.01.2008

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


Mam pewien problem z obsługa COOKIES

Kiedy dodaje jakiś plik COOKIE zostaje on dodany ale dopiero po ponownym odświeżeniu strony

klikam na link http://www.perelkibaltyku.pl&do_schowka=33

wykonuje się kod:

  1. <?php
  2. if ( isset($_GET['do_schowka']) ){ 
  3.  
  4. if (isset($_COOKIE['do_schowka'])){
  5.  
  6. $stara = explode('.', $_COOKIE['do_schowka']);
  7.  
  8. if(!in_array($_GET['do_schowka'], $stara) ){
  9.  
  10. $nowa = implode('.', $stara).$_GET['do_schowka'].'.';
  11.  
  12. }else{ 
  13.  
  14. $nowa = implode('.', $stara);
  15. } 
  16.  
  17. }else{
  18.  
  19. $nowa = $_GET['do_schowka'].'.';
  20.  
  21. }
  22. echo 'A:'.$nowa.'
  23. ';
  24.  
  25. setcookie('do_schowka', $nowa, time()+25920000, '', '.perelkibaltyku.pl'); 
  26.  
  27.  } 
  28.  
  29.  echo 'B:'.$_COOKIE['do_schowka'];
  30. ?>


Bezpośrednio po kliknięciu na link efektem tych ech bedzie
  1. <?php
  2. A:33.
  3. B:
  4. ?>


czyli pusta jest zmienna cookie, nie mniej, kiedy sprawdzam plik cookie na zapisany u siebie na komputerze, wiedze ze zapisana jest w nim prawidlowa wartość. Kolejny raz odświeże stronę, plik COOKIE na stronie jest odczytywany dobrze

tak samo podobny, ale jeszcze troche bardziej złożony problem wystepuje przy usuwaniu z "schowka"

  1. <?php
  2. if ( isset($_POST['schowek_usun']) ){
  3.  
  4. $stara = explode('.', $_COOKIE['do_schowka']);
  5. unset($_COOKIE['do_schowka']);
  6.  
  7. foreach ($stara as $key => $id_s){ 
  8.  
  9. if(in_array($id_s, $_POST['zaznacz'] ) ){
  10.  
  11. unset($stara[$key]); 
  12.  
  13. }
  14.  
  15. }
  16. $nowa = implode('.', $stara);
  17.  
  18. setcookie('do_schowka', $nowa, time()+25920000, '', '.perelkibaltyku.pl'); 
  19.  }
  20. ?>


na początku "tablica" do_schowka zawiera kilka wartosci, nastepnie chcę usunąć z niej pewne wartości, po kliknieciu na formularz, cała zmienna $_COOKIE['do_schowka'] jest pusta mimo ze powinny w niej zostać jakieś wartości, nie pomaga tutaj odświeżenie strony, dopiero kiedy przejde na jakaś inną podstronę mojej strony, wtedy $_COOKIE['do_schowka'] ma już prawidłowe wartości

Ten post edytował propage 20.06.2008, 19:55:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
sobstel
post
Post #2





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Zapoznaj się z tym jak działają cookie. Cookie są ustawianie po stronie klienta. Gdy wywołujesz setcookie to ustawiane są tylko odpowiednie nagłówki, które informują przeglądarke, żeby ustawiła odpowiednie cookie (na tym etapie nie wiadomo jeszcze czy przeglądarka się na to w ogóle zgodzi). Dopiero przy nastęþnym żądaniu przeglądarka informuje o wartości cookie (jeśli zostało ustawione) i dopiero wtedy możesz się odwoływać do niej po stronie serwera.

Czytaj dokładnie manual! Pisze to chociażby w opisie funkcji setcookie().
Go to the top of the page
+Quote Post
Ripper
post
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 1
Dołączył: 16.06.2008

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


Zauważyłem to i ja, gdyż właśnie niedawno zaznajomiłem się z Ciasteczkami (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Niby od strony serwera itp. wygląda to dosyć logicznie bo serwer w chwili wysylania rzadania do ustawienia ciasteczke nie może jakby tego pobrać już (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) , ale z punktu widzenia programisty jest to trochę głupie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) . Sam rozwiązałem to, iż zaraz po ustawieniu ciasteczek nie będą się wyświetlały, a po prostu będzie tekst z linkiem gdzieś i dopiero tam będzie się wyświetlać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ale wróćmy do sprawy, pytanie brzmi tylko - czy da się obejść, aby zaraz po setcookie można było załadować "świeżo upieczone" ciasteczka do skryptu?
Go to the top of the page
+Quote Post
webdice
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(Ripper @ 20.06.2008, 22:29:42 ) *
(...) Ale wróćmy do sprawy, pytanie brzmi tylko - czy da się obejść, aby zaraz po setcookie można było załadować "świeżo upieczone" ciasteczka do skryptu?


Nie do końca, ale może zadowoli Cię JavaScript/AJAX.
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: 18.12.2025 - 21:41