有没有办法取消设置除了所需变量之外的每个会话变量?

时间:2015-10-08 01:50:56

标签: php session

我有一个非常基本的购物车设置,我的“清除购物车”功能运行以下PHP,目的是清除购物车而不会丢失需要保存的会话数据(登录用户名/电子邮件/等)。

我已经为我想要的代码工作(只是玩弄PHP),但它看起来效率不高,我想知道是否有一种更简单的方法来取消排除特定会话变量之外的所有内容。如果您只想保留2个变量并想要摆脱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; 

?>

铊;博士 有没有办法取消设置除特定变量之外的所有会话数据。

2 个答案:

答案 0 :(得分:2)

foreach($_SESSION as $kill=>$v){
    if (!in_array($kill,ARRAY OF WANTED KEYS))
      {unset ($_SESSION[$kill]);}
    }

演示:http://codepad.viper-7.com/t8HU4L

答案 1 :(得分:0)

从外观来看,取消设置一组特定$_SESSION变量的唯一方法是手动取消设置每个变量。

另一个替代方法是存储您想要的两个变量,然后运行unset($_SESSION),之后只需使用旧数据重新设置新变量。例如:

session_start();

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

unset($_SESSION); 

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