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
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

Posty w temacie


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: 27.12.2025 - 20:03