[php]Błąd przy zapisie cookies


(northwest) #1

Witam serdecznie,

Mam taki kod:

array_unshift($_COOKIE['last_seen'], $product);
$_COOKIE['last_seen'] = array_slice($_COOKIE['last_seen'], 0, 10);

I wyświetla mi błąd:


(#r2d2#) #2

Funkcje array_unshift i array_slice wymagają tablicy jako pierwszego argumentu, a Ty dajesz im string. Wydaje mi się, że trzeci przykład z tej strony może Ci pomóc: http://php.net/manual/en/function.setcookie.php.


(Drobok) #3

Json byłby równie dobry do zapisanie każdego elementu w osobnym ciastku


(Terran) #4
$last_seen = !empty($_COOKIE['last_seen'])?explode(',', $_COOKIE['last_seen']):array();
if(in_array($product, $last_seen)) unset($last_seen[array_search($product, $last_seen)]);
$last_seen = array_slice(array_unshift($last_seen, $product), 0, 10);
setcookie('last_seen', implode(',', $last_seen), time()+604800, '/');

Po tym w $last_seen masz 10 ostatnich pozycji włącznie z aktualną i możesz z mini zrobić co chcesz a w cookie masz już je zapisane (ważne przez tydzień).

 

Ważne żeby ‘setcookie’ było wywołane jeszcze przed wysłaniem jakichkolwiek danych do użytkownika, jeśli nie możesz tego zagwarantować to prawdopodobnie będziesz musiał użyć JS.

 

Wydaje mi się, że powyższy kod spełnia wszystkie przedstawione przez Ciebie założenia (o ile zmienna $produkt nie zawiera przecinków - przyjąłem, że będą to ID produktów).