Помогите переделать "товар в корзину" с SESSION на COOKIE (PHP)
Всем привет! Не было 10+ лет проблем с сессией, но админ на хосте решил из вечной сессии сделать 30минут.
Теперь хочу переделать на куки, но мои знания ограничиваются. Я уже пару дней кручу-верчу, записываю куку с общим колличеством товара, а сам товар(ы) не могу.. Прошу помощи.
Есть такой код в отдельном файле: ПостОм принимает id и qnt товара (после нажатия кнопки "в корзину")
if(!isset($_SESSION['cart']))
{
$_SESSION['cart'] = array();
$_SESSION['total_items'] = 0;
}
if(isset($_POST['id'])){
$cart = $_POST['id'];
if (!preg_match("|^[\d]+$|", $cart)) { Header ("Location: /"); }
function add_to_cart($cart){
$qnt = str_replace(",",".",$_POST['qnt']);
if (!preg_match("|^[\d]+$|", $qnt)) { Header ("Location: /"); }
if(isset($_SESSION['cart'][$cart]))
{
$_SESSION['cart'][$cart] = $_SESSION['cart'][$cart] + $qnt;
}
else
{
$_SESSION['cart'][$cart] = $qnt;
return true;
}
return false;
}
add_to_cart($cart,$conn);
$_SESSION['total_items'] = total_items($_SESSION['cart']);
}
function total_items($cart){
$num_items = 0;
if(is_array($cart))
{
foreach($cart as $cart => $qty)
{
$num_items += $qty;
}
}
return $num_items;
}
if(isset($_POST['update'])){
update_cart();
}
function update_cart(){
foreach($_SESSION['cart'] as $cart => $qty)
{
if(($_POST[$cart] == '0') OR empty($_POST[$cart]))
{
unset($_SESSION['cart'][$cart]);
}
else
{$_SESSION['cart'][$cart] = $_POST[$cart];
}
}
$_SESSION['total_items'] = total_items($_SESSION['cart']);
}
if(isset($_GET['delete'])){
$cart = $_GET['delete'];
unset($_SESSION['cart'][$cart]);
$_SESSION['total_items'] = total_items($_SESSION['cart']);
}
function empty_cart(){
unset($_SESSION);
unset($_SESSION['cart']);
unset($_SESSION['total_items']);
}
function find($id, $conn)//
{
$result = $conn->query("SELECT * FROM items WHERE id='$id'");
$item = $result->fetch(PDO::FETCH_ASSOC);
return $item;
}
В корзине выводим так:
foreach($_SESSION['cart'] as $id => $qty){
$product = find($id, $conn);
}
Источник: Stack Overflow на русском