我的购物车中的产品由ajax存储并设置为会话。 从cart_functions.php查看我的代码(这里是购物车中按钮的功能)。
if (isset($_GET['action'])) {
$action = $_GET['action']; //get button action name
$prod = $_GET['prod_id']; // id of the product
$prodname = 'product_'.$prod;// name of the product
switch ($action) {
case 'add':
$result = add_prod($prod, $prodname);
break;
///rest of switch....(not important for now)
这是将产品添加到会话
的功能function add_prod($prod, $prodname){
//add function
$_SESSION[$prodname] = 1;
return ['result'=>'success'];
}
此会话的名称是这样的 - > $_SESSION['product_123']
等。
好的,现在我想取消所有的$_SESSION[$prodname]
。
在其他页面$_SESSION[$prodname]
是$_SESSION['product_123']
。
因此,在我的购物车中,我有多个$_SESSION[$prodname]
我想在客户提交订单时取消设置。
我怎么能得到所有$_SESSION['product_123'],$_SESSION['product_1234']...and so on
?
我不知道这是否有帮助,但为了计算我的产品,我使用的代码来自我在这里的帮助...看
$product_count = count(array_filter(array_keys($_SESSION), function($x) {
return substr($x, 0, 8) == 'product_';
}));
答案 0 :(得分:2)
在您希望取消设置特定会话元素的位置,您是否尝试过
unset($_SESSION[$product]);
因为这应该是所有需要的。我搜索了你的代码,却找不到你想要取消任何东西的地方。
答案 1 :(得分:1)
尝试session_destroy()创建一个类似reset.php的新文件,你把session_destroy()这个擦除所有会话肯定
答案 2 :(得分:1)
你最好使用数组
$_SESSION['products'][$id]
它允许您轻松遍历您的产品,您可以通过
重置它 unset($_SESSION['products'])