Ostatnio oglądane oferty - cookie

0

Witam,

Mam taki problem, a mianowicie chodzi o wyświetlanie 5 ostatnio oglądanych ofert. W szerszym rozumieniu mam listę ofert samochodów i po kliknięciu na dane ogłoszenie wyświetlają się szczegółowe informacje o pojeździe. Następnie pobieram interesujące mnie informacje jak: id ogłoszenia, marka, model, cena. Poniżej to co napisałem:

 
$tablica = Array(
       $oid, $cena, $marka, $model
);

setcookie ("cookie", serialize($tablica),time()+3600);
setcookie ("cookie", serialize($tablica),time()+3600);
setcookie ("cookie", serialize($tablica),time()+3600);
setcookie ("cookie", serialize($tablica),time()+3600);

$odczytana = unserialize($_COOKIE['cookie']);
var_dump($odczytana);

Wszystko działa, pobiera interesujące mnie dane ale jak kliknę na kolejne ogłoszenie to poprzednio oglądane "znika". Wiem, że może jest to sprawa banalna ale po prostu nie mam pomysłu jak to rozwiązać.

Dziękuję za pomoc.

0

serialize i cookies - to potencjalne dziury! (pisze o tym w manualu do setcookie) nie używaj! nigdy nie używaj unserialize na czymkolwiek, co pochodzi od użytkownika!

poza tym w Twoim kodzie to Ty:
przypisujesz cztery razy tą samą wartość do ciasteczka, potem odczytujesz wartość z $_COOKIE, ale ona NIE BĘDZIE zawierać jeszcze ustawionego ciastka [ponieważ działa to tak, że Ty wysyłasz do usera ciastko, jego przeglądarka akceptuje je, bądź odrzuca, i dopiero w następnym zapytaniu wiesz, czy ciastko jest ustawione]!

generalnie - manual, manual, i jeszcze raz manual, zapoznaj się z protokołem HTTP, szczególnie pod kątem działania ciasteczek.

i po co Ci w ciastku marka, model, cena?! samo id Ci wystarczy przecież, a jak chcesz zapisać kilka wartości - to ciastka niestety nie mają tablic, ale możesz użyć rozdzielania wartości znakiem/znakami (manual do explode) - to zresztą zaproponowane jest ... w manualu.

a więc - masz poważne braki w teorii, nadrób je PRZED praktyką, bo nie ma sensu praktykować czegoś o czym nie ma się pojęcia - więcej czasu sumarycznie stracisz na próby i błędy

0

To może sesje by były lepszym rozwiązaniem niż ciasteczka ?

0

sesje mają ograniczony czas trwania (ten jeszcze możesz w miarę kontrolować). ale lepiej trzymać dane na serwerze (nawet serializowane, choć serializacja przez serialize to zwykle zło), a userowi dać stałe ciastko z unikalnym ID (generowanym losowo, nie po kolei), z którym będziesz wiązał dane w bazie. zapisuj też ostatni czas dostępu do tejże sesji, żeby okresowo wywalać z bazy danych dane z sesjach dłuższych niż np. tydzień.

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