У меня есть простая базовая корзина, моя функция "четкой тележки" запускает следующий PHP, цель состоит в том, чтобы очистить корзину, не теряя данные сеанса, которые необходимо сохранить (имя пользователя входа/адрес электронной почты/и т.д.).
Код, который у меня есть, работает для того, что я хочу (просто играя с PHP), но он не кажется очень эффективным, и мне интересно, есть ли более простой способ отключить все, исключая определенные переменные сеанса. Похоже, что должна быть альтернатива перечислению всего, от чего вы хотите избавиться, если хотите сохранить только две переменные и хотите избавиться от 9.
Способ отключить все, исключая пользовательские данные, которые сохраняются/сохраняются независимо от того, что-то заказывается или нет.
<?php
session_start();
unset
(
$_SESSION['pcode1'],
$_SESSION['uprice1'],
$_SESSION['quantity1'],
$_SESSION['pcode2'],
$_SESSION['uprice2'],
$_SESSION['quantity2'],
$_SESSION['pcode3'],
$_SESSION['uprice3'],
$_SESSION['quantity3']
);
header('Location: cart.php');
exit;
?>
Tl; dr Есть ли способ отключить все данные сеанса, исключая определенные переменные.
foreach($_SESSION as $kill=>$v){
if (!in_array($kill,ARRAY OF WANTED KEYS))
{unset ($_SESSION[$kill]);}
}
!
» .
Из взглядов единственный способ отключить определенный набор переменных $_SESSION
- это вручную отключить каждый из них.
Другой альтернативой было бы сохранить две переменные, которые вы хотели бы, а затем запустить unset($_SESSION)
, после чего просто переустановите новые переменные со старыми данными. Например:
session_start();
$tmp1 = $_SESSION['variable1'];
$tmp2 = $_SESSION['variable2']
unset($_SESSION);
$_SESSION['variable1'] = $tmp1;
$_SESSION['variable2'] = $tmp2;
unset($_SESSION);