Я пытаюсь создать недавно просмотренную функцию на веб-сайте. Идея состоит в том, что у вас есть поле в правом навигаторе, которое показывает ваши последние 3 просмотренных продукта. Вам не нужно регистрировать его, и это не проблема, если пользователь очищает файлы cookie, он только начинается.
Из того, что я исследовал, лучший способ сделать это – с помощью массива файлов cookie (в отличие от установки 5 файлов cookie или добавления файлов cookie или выполнения чего-либо в mysql).
У меня две проблемы:
Когда я помещаю это на страницу:
COOKIE: <?php echo $cookie; ?>
Я получаю это:
COOKIE: a:7:i:0;s:3:"100";i:1;s:3:"200";i:2;s:3:"300";i:3;s:3:"400";i:4;s:3:"500";i:5;s:3:"600";i:6;s:3:"150";}
Это мой код:
//set product id $product_id = [//some stuff here sets the product id] // if the cookie exists, read it and unserialize it. If not, create a blank array if(array_key_exists('recentviews', $_COOKIE)) { $cookie = $_COOKIE['recentviews']; $cookie = unserialize($cookie); } else { $cookie = array(); } // add the value to the array and serialize $cookie[] = $product_id; $cookie = serialize($cookie); // save the cookie setcookie('recentviews', $cookie, time()+3600);
Как первыми получить cookie для хранения 3 значений и сбросить самые старые? Каков наилучший способ извлечения этих идентификаторов во что-то, что я могу внести в запрос? … str_replace?
Это вызывает еще один вопрос, который должен ли я просто поместить URL-адрес, якорный текст и пару атрибутов продукта в файл cookie, а не искать его с помощью php / mysql?
Как всегда, спасибо заранее.
Вот ответ, который я выяснил в myssef:
// if the cookie exists, read it and unserialize it. If not, create a blank array if(array_key_exists('recentviews', $_COOKIE)) { $cookie = $_COOKIE['recentviews']; $cookie = unserialize($cookie); } else {$cookie = array();} // grab the values from the original array to use as needed $recent3 = $cookie[0]; $recent2 = $cookie[1]; $recent1 = $cookie[2];