Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: $_COOKIES
Forum PHP.pl > Forum > PHP
Black-Berry
Dlaczego to nie działa sad.gif ?

  1. <?php
  2. if (!isset($_COOKIE['cookie'])) {
  3.   setcookie('cookie', time(), 0);
  4. }
  5. print $_COOKIE['cookie'];
  6. ?>


Ciastko zostaje w przeglądarce po zamknięciu i ponownym otwarciu ;( Time ciągle taki sam.
akurczyk
pewnie strona jest kodowana w utf-8 jeśli tak to zakoduj ją w utf-8 bez bom np. w nootpad++
Black-Berry
Nie. Wszystko jest w notacji NO-Boom. Spróbuj wkleić ten skrypt i odpalic. Zamknąć przeglądarkę i jeszcze raz odpalić. Wyświetla za kazdym razem ten sam wynik a powinno sie zupdatowac

Kurcze sory, chyba mam chache w przeglądarkach jakiś dziwny. Już działa.

A jednak niektóre przeglądarki zapamiętują ciasteczka które powinny wygasnąć. Z głównych ff, ie, opera, chrome tylko opera poprawnie usuwa ciasteczka. Czy mógłby ktoś to sprawdzić u siebie ?
akurczyk
według mnie to niektóre przeglądarki mogą traktować zero jako bezterminowe lub np 1 godz.
polecam ustawić na time()-3200. u mnie przynajmiej to działa ale zaraz jeszcze po próbuje.
używam google chrome.

  1. <?php
  2. if(!isset($_COOKIE['cookie'])) {
  3.    setcookie("cookie", time(), time()-3600);
  4. }
  5. echo "Tim: ".time()."<br>";
  6. echo "Cooki: ".$_COOKIE['cookie'];
  7. ?>

Działa?questionmark.gif bo u mnie tak (VertrigoServ i Google Chrome).
Black-Berry
Pliki Cookies nie są usuwane w przeglądarce IE7 oraz IE6. Co ciekawe wszystko działa poprawdnie dla ciasteczka sessji które powinno działać na tej samej zasadzie co inne. Ono jest usuwane normalnie.
akurczyk
jeszcze jedno sprawdź w opcjach ie za ile wygaśnie ciacho z 0
Black-Berry
Cytat(akurczyk @ 13.09.2008, 15:00:24 ) *
Działa?questionmark.gif bo u mnie tak (VertrigoServ i Google Chrome).

W chromie nie działa. Dopiero po ręcznym usunięciu cookiesów dolna wartosc sie zmienia. Moze mam coś spiepszone lokalnie ?
Cytat
jeszcze jedno sprawdź w opcjach ie za ile wygaśnie ciacho z 0

pisze że po zakończeniu sesji
akurczyk
u mnie dolna wartość cały czas jest pusta więc już nie wiem.
sprubuj wyzyścić cookie w przeglądarce i jeszcze raz uruchomić skrypt z time()-3200
Black-Berry
jak mozesz pisac ze dolna wartosc w twoim skrypcie jest pusta cały czas skoro pisałes wczesniej ze u ciebie dziala ?
ahead
  1. <?php
  2. setcookie('cookie', time(), 0);
  3. ?>


Ustawiając trzeci parametr na 0 ustawiasz wartość $_COOKIE['cookie'] bezterminowo na bieżącą wartość time(). Wartość nie zmieni się na bieżącą dopóki nie usuniesz ciastka. Jeśli chcesz żeby wartość po odświerzeniu zmieniła się musisz zrobić to inaczej.

  1. <?php
  2. if(isset($_COOKIE['cookie'])){
  3.    print $_COOKIE['cookie'];
  4.    unset($_COOKIE['cookie']);
  5.    setcookie('cookie', time(), 0);
  6. }else{
  7.  setcookie('cookie', time(), 0);
  8. }
  9. ?>
Black-Berry
chyba się rozmineliśmy z tematem smile.gif Ja chce właśnie żeby w trakcie trwania sesji ciastko nie zmieniło swojej wartości i usuneło się po zamknięciu przeglądarki. Chcę mieć własną obsługę sesji i potrzebuję ciastka o nazwie 'sessionId'.
akurczyk
działa bo ciactko jest ustawiane na godzine w tył czyli nie jest ustawiane.
ja na twoim miejscu użył bym zwykłych sesji.
może ustaw ciastko bez czasu (setcookie("cookie", time())), jeśli się nie mylę to to ciastko będzie ważne tylko na czas działania przeglądarki (sesji).
Sprubuj tak
Na początku każdego skryptu:
  1. <?php
  2. $zapytanie = mysql_query("SELECT * FROM sesje WHERE id_sesji=''".addslashes($_COOKIE['id_sesji'])."'");
  3. if(mysql_num_rows($zapytanie) == 1) {
  4. while($wynik = mysql_fetch_array($zapytanie)) {
  5. $sesja_login = $wynik['login'];
  6. $sesja_haslo = $wynik['haslo'];
  7. }
  8. }
  9. ?>

Logowanie:
  1. <?php
  2. //Dodanie do tabeli sesje nowego rekordu (id_sesji, login, haslo)
  3. setcookie("id_sesji", "id_sesji");
  4. ?>
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.