Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: setcookie nie tworzy ciach na localhoscie
Forum PHP.pl > Forum > PHP
ageusz
Witam,

wiem, że setcookie było poruszane wiele razy, jednak żadne rozwiązanie ani z forum, ani z php.net ani z całego internetu nie dało rady, więc w końcu muszę zadać pytanie sam.

Otóż pracuję sobie na swoim kompie, na localhost i za nic nie mogę utworzyć ciasteczka. Zrobiłem sobie specjalnie króciutki skrypcik, żeby testować, czy działa i nic. Oto jak wygląda ostatnia wersja(było ich sporo):

  1. if(!isset($_COOKIE["username"]))
  2. {
  3. $domain = ($_SERVER['HTTP_HOST'] != 'localhost') ? $_SERVER['HTTP_HOST'] : false;
  4. setcookie('cookiename', 'data', time()+3600, '/', $domain, false);
  5. echo "ustawione";
  6. }
  7. else
  8. echo "Cookie: ".$_COOKIE["cookiename"];


Nic nie jest wysyłane przed, ani nawet po tym kodzie, żadna spacja. Mam wrażenie, że przeglądarka na to nie pozwala. Czytałem też, że domena powinna zawierać dwie kropki, a na localhoście po prostu false. Nic jednak nie działa. Może trzeba jakoś przekonfigurować apacha?
Mam postawionego ostatniego WAMPa, Apach 2.2.11, PHP 5.3.0, więc supergloblne COOKIE też jest.

Będę wdzięczny za pomoc
ostrylg
a masz włączoną obsługę cookies w przeglądarce ?
thek
Dla localhosta wcale nie trzeba dodatkowych warunków robić przecież. Localhost to taki sam serwer jak każdy inny i odkąd pamiętam, zawsze mi tworzyło ciacho To właśnie w przypadku poslania false zamiast localhost bym się martwił o to, że ciastka mi nie utworzy, bo niby do czego?
Kocurro
  1. if(!isset($_COOKIE["username"]))
  2. {
  3. $domain = ($_SERVER['HTTP_HOST'] != 'localhost') ? $_SERVER['HTTP_HOST'] : false;
  4. setcookie('cookiename', 'data', time()+3600, '/', $domain, false);
  5. echo "ustawione";
  6. }
  7. else
  8. echo "Cookie: ".$_COOKIE["cookiename"];


A nie powinno być:

  1. if(!isset($_COOKIE["cookiename"]))
  2. {
  3. $domain = ($_SERVER['HTTP_HOST'] != 'localhost') ? $_SERVER['HTTP_HOST'] : false;
  4. setcookie('cookiename', 'data', time()+3600, '/', $domain, false);
  5. echo "ustawione";
  6. }
  7. else
  8. echo "Cookie: ".$_COOKIE["cookiename"];

korro
Witam.
Jakiś czas temu też doświadczyłem tego problemu.
Nie miałem czasu na zbadanie, ale dodałem do hosts wpis 127.0.0.1 local.pl
i teraz korzystam z local.pl
Pozdrawiam.
webdice
Sprawdź czy to zadziała.

  1. setcookie( 'test', 'value', time() + 3600 );
ageusz
Dzięki za odpowiedzi.
Kocurro, tam była literówka, zmieniałem przed samym skopiowaniem, potem było już dobrze, ale i tak nie działało

ostrylg: obsługa raczej jest, bo inne strony obżerają się ciasktami niezmiernie winksmiley.jpg

thek: otóż przeczytałem na php.net w komentarzach ludzi do setcookies, że przeglądarki nowsze (np. powyżej IE6 i wyżej oraz firefoxy itd) odrzucają ciasteczka, jeśli domena nie ma dwóch kropek. Zresztą spotkałem się z tym nie tylko tam.

korro: masz na myśli plik znajdujący się w windows/system32/drivers/etc/ ? Jeśli tak to trzeba zmienić tylko tam, czy jeszcze gdzieś? Jeśli tylko tam to niestety nie przyniosło to efektu.

webdice: taka postać była na początku hehe
webdice
Cytat(ageusz @ 5.03.2010, 16:17:17 ) *
(...) webdice: taka postać była na początku hehe


Sprawdzałeś na innej przeglądarce?
ageusz
Tak sprawdzałem na operze również, na IE akurat nie mam możliwości bo z jakichś dziwnych względów nie chce nic z localhosta odpalić. Może coś w tym jest nie tak. Może format winksmiley.jpg
Właśnie zauważyłem, że sesje również nie działają, choć może to nie dziwi, w końcu też używają cookies. Może zainstaluję sobie inny serwer, np. XAMPP i zobaczę co będzie.



Wydaje się, że problemem jest WAMP, gdyż na XAMPP sesja działa. Fakt faktem, ciastka dalej nie za bardzo, ale jednak jest jakaś interesująca zmiana.



Jednak problemem nie jest ani WAMP, ani XAMPP tylko xdebug. Jeśli wywali się xdebug, sesje działają. Choć niedziałanie ciastek pozostaje wciąż niewiadomą.
Pilsener
  1. echo "ustawione";
- tere fere, a sprawdziłeś czy funkcja setcookie zwraca true? Jeśli tak, to ciacho się tworzy, może jest problem z jego odczytem? I pamiętaj, że ciacho będzie widoczne dopiero po przeładowaniu strony.

Porównaj parametry obydwu serwerów (pliki php.ini) w części dotyczącej ciastek, sprawdź też, czy powodem nie jest ścieżka, przetestuj kod z manuala:
  1. // set the cookies
  2. setcookie("cookie[three]", "cookiethree");
  3. setcookie("cookie[two]", "cookietwo");
  4. setcookie("cookie[one]", "cookieone");
  5.  
  6. // after the page reloads, print them out
  7. if (isset($_COOKIE['cookie'])) {
  8. foreach ($_COOKIE['cookie'] as $name => $value) {
  9. echo "$name : $value <br />\n";
  10. }
  11. }
ageusz
Dzięki wam wszystkim. Mam już odpowiedź. Okazuje się, że wszystkie wersje są dobre i ciasteczka działają. Jedynym problemem był xdebug. Temat do zamknięcia, dzięki wszystkim za pomoc. Bez was pewnie nadzieja by zgasła tongue.gif

PS. Pilsener - to echo było tylko po to żebym wiedział gdzie jestem winksmiley.jpg
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.