Tworzenie ciasteczek i komunikacja pomięzy nimi

Odpowiedz Nowy wątek
2011-09-04 00:32
Zi00mal
0

Witam,
mam straszny problem z ciastkami. Wydawało mi się że są one zmiennymi globalnymi, znaczy jak utworzę je gdzieś to wszędzie mam do nich dostęp, a tu jednak psikus. Używam WebServ 2.0 i mam ułożone tak foldery (nazwy utworzone do celów orientacyjnych):

glówny:
- folder1/
- folder2/podfolder1/

W folderze /folder1 mam wyswietl.php oraz utworz.php. Podczas wyświetlania robię tak:

print_f($_COOKIE); // daje mi to możliwość sprawdzenia całej tablicy

Natomiast w /podfolder1 mam sam szablon (html bez kodu php), w którym po naciśnięciu przycisku wykonuje zawartość z pliku (przy pomocy AJAX) utworz.php. W tym pliku tworzę ciastko:

setcookie("nazwa_ciastka", "abcd", time()+60);  // na 1 minutę do prób

Teraz jest tak że wyświetlając $_COOKIE['nazwa_ciastka'] w pliku utworz.php wyświetla mi poprawnie, natomiast w pliku wyswietl.php jest pusto.

I tu tkwi problem. Robiąc na odwrót, czyli tworząc ciastko w wyswietl.php i wyswietlajac w dodaj.php, oczywiście poprzez AJAX i plik szablonu - wszystko działa i ciastko jest widoczne.

Jest możliwość ustawienia foldera (zakresu) i jak robię "/" to nic nie daje. Sprawdzałem też "../". Podawałem też domenę w postaci ip 127.100.0.0, oraz folderu.

Co zrobić żeby ciastka były widoczne w taki sposób jaki podałem jako pierwszy.

P.S. Jeżeli zrobię tak dla pliku dodaj.php:

setcookie("abc", "z dodaj", time()+60);
print_r($_COOKIE);

wyswietl.php

setcookie("def", "z wyswietl", time()+60);
print_r($_COOKIE);

Rezultat w dodaj.php:
Array ( [abc] => z dodaj [def] => z wyswietl )

Rezultat w wyswietl.php:
Array ( [def] => z wyswietl )

Pozostało 580 znaków

2011-09-04 11:56
0

bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

Musisz dać ciasteczko na domenę.

edytowany 2x, ostatnio: konrados, 2011-09-04 11:56

Pozostało 580 znaków

2011-09-04 12:11
Zi00mal
0

Nie rozumiem tego. Dzisiaj dałem:

setcookie("nazwa_ciastka", "abcd", time()+60, "/");  // na 1 minutę do prób 

To jest widoczne wszędzie, a wczoraj nie było ... Teraz mam 2 nowe pytania:

  1. Jeżeli podaję ścieżkę folderu "/" to muszę podać też domenę ? Jeżeli tak to http://localhost czy 127.100.0.0 ?
  2. Jak już zaczęło mi działać to jak stworzę powyższą metodą ciastko w pliku dodaj.php to jest widoczne w obu plikach - dodaję teraz ciastko w wyszukaj.php taką metodą:
    setcookie("nazwa_ciastka", "inny_napis", time()+60); // na 1 minutę do prób
    czyli bez podania ścieżki folderu i ciastko nadpisuje poprzednie, więc wszystko jest dobrze, ale jak znów wywołam dodaj.php to nie nadpisuje mi ciastka powstałego w wyszukaj.php. Czemu tak się dzieje ?

Pozostało 580 znaków

2011-09-04 12:31
0
  1. skoro działa bez domeny to nie trzeba, chyba logiczne.
  2. dlatego, że dodałeś ciasteczko na inną ścieżkę.

Pozostało 580 znaków

2011-09-04 13:24
Zi00mal
0
  1. Może i logiczne, ale cholera wie jak zachowa się na serwerze home.pl
  2. Czyli zapisanie ciastka bez podania ścieżki jest "wyższym" w hierarchii niż gdy zapisuję z podaniem ścieżki.

Pozostało 580 znaków

2011-09-04 14:16
0

nie wyższym tylko po prostu zapisujesz inne ciasteczko ...

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0