Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Cookie
Forum PHP.pl > Forum > PHP
propage
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
sobstel
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().
Ripper
Zauważyłem to i ja, gdyż właśnie niedawno zaznajomiłem się z Ciasteczkami 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ż tongue.gif, ale z punktu widzenia programisty jest to trochę głupie 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ć 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?
webdice
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.
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.