Есть ли способ сбрасывать каждую переменную сеанса, исключая нужные переменные?

1

У меня есть простая базовая корзина, моя функция "четкой тележки" запускает следующий 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 Есть ли способ отключить все данные сеанса, исключая определенные переменные.

  • 0
    unset($_SESSION);
  • 0
    Используйте цикл и оператор if. Вот и все.
Показать ещё 3 комментария
Теги:
session

2 ответа

2
Лучший ответ
foreach($_SESSION as $kill=>$v){
    if (!in_array($kill,ARRAY OF WANTED KEYS))
      {unset ($_SESSION[$kill]);}
    }

Демо: http://codepad.viper-7.com/t8HU4L

  • 0
    в основном то, что я сказал ОП ранее и в двух словах, но решил удалить этот комментарий (должно быть, у них над головой). Теперь доказательств больше нет в пудинге.
  • 0
    если я вспоминаю, это выглядело примерно так: «присвойте переменные сессионные массивы и используйте in_array () с оператором ! » .
Показать ещё 8 комментариев
0

Из взглядов единственный способ отключить определенный набор переменных $_SESSION - это вручную отключить каждый из них.

Другой альтернативой было бы сохранить две переменные, которые вы хотели бы, а затем запустить unset($_SESSION), после чего просто переустановите новые переменные со старыми данными. Например:

session_start();

$tmp1 = $_SESSION['variable1'];
$tmp2 = $_SESSION['variable2']

unset($_SESSION); 

$_SESSION['variable1'] = $tmp1;
$_SESSION['variable2'] = $tmp2;
  • 0
    Будет работать, а не то, о чем я думал. Я предпочитаю ответ Дагона, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню