Pokazywanie postów oznaczonych etykietą cookie. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą cookie. Pokaż wszystkie posty

sobota, 16 listopada 2013

Tworzenie sesji krótkiej oraz długiej.

Do tego wykorzystujemy pliki cookie. Zapisujemy id sesji SESID, a następnie ustawiamy żywotność tego pliku na jeden dzień oraz 10 lat. W formularzu tworzymy Check box, z name "remember_me". Gdy to pole zostanie zaznaczone plik cookie zostanie zachowany przez przeglądarkę kolejne 10 lat, gdy pozostanie odznaczone, plik cookie zostanie usunięty za 24 godziny.

if($_POST['remember_me'] != 1){
/* 1 dzień */
    setcookie('sesid',$r['hash'], time() + (1 * 24 * 60 * 60)); //dni * godziny * minuty  * sekundy
}else{
/* 10 lat */
setcookie('sesid',$r['hash'], time() + (10 * 365 * 24 * 60 * 60)); // lata * dni * godziny...
}

W celu sprawdzenia w plikach php czy użytkownik jest zalogowany wystarczy wykorzystać warunek

if(!isset($_COOKIE['sesid'])){
// nie zalogowany
}else{
// zalogowany
       }


piątek, 12 kwietnia 2013

Zapisywanie plików cookie

Natknąłem się niedawno na problem z zapisywaniem plików cookie. Zapisywały się pięknie tylko, że na konkretniej podstronie, a nie dla głównej domeny. Teraz, dzięki ustawieniu path na główną domenę, plik cookie jest dostępny z poziomu każdej podstrony. Jeśli ktoś potrzebuje innego poziomu, zachęcam do zabawy z wartością path.

Dodam, że warto ustawić przekierowanie np z www. na bez  www, tak aby pliki cookie się nie różniły. Jest to bardzo częsty błąd i prowadzi do niespójności danych w ciasteczka.



function setCookie(cname, cvalue) {
var waznosc = new Date()
waznosc.setMonth(waznosc.getMonth()+6) //ustawiamy czas na 6 miesięcy do przodu
cexpire = waznosc;

document.cookie = cname + '=' + escape(cvalue) +
(typeof cexpire == 'date' ? 'expires=' + cexpire.toGMTString() : '') +
';path=/;domain=.adresTwojejDomeny.pl';
}