取消设置 php 会话变量
Posted
技术标签:
【中文标题】取消设置 php 会话变量【英文标题】:Unset php session variable 【发布时间】:2013-02-17 04:06:43 【问题描述】:我正在通过 ajax 传递一个 ID,以便由 $_SESSION 删除。 ajax 部分工作正常,php 在 POST 中接收 id,但不能取消设置变量。为什么???这是我的代码:
ajax部分:
$(".delete").live('click', function(e)
e.preventDefault();
var id_to_remove = $(this).attr('id');
//alert(id_to_remove);
$.ajax(
type: "POST",
url: 'inc/functions/remove_item_from_cart.php',
data: id : id_to_remove ,
success: function(data)
$("#content").load('inc/functions/get_checkout_content.php');
alert(data);
)
);
php接收部分:
session_start();
if(isset($_SESSION['cart']) && isset($_POST['id']))
//echo var_dump($_SESSION['cart']);
$ncart=$_SESSION['cart'];
if (count($ncart)>0)
unset($ncart[$_POST['id']]); // this is NOT working!!!
$ncart=array_values($ncart);
$_SESSION['cart']=$ncart;
if(count($ncart)==0)
unset($_SESSION['cart']);
unset($_SESSION['cart_total']);
echo "all_empty";
// this if part is the only working!
任何有用的建议为什么我不能取消设置会话变量?谢谢!
【问题讨论】:
这段代码到底有什么不适用的?我们不会猜测出了什么问题...... 您使用的是什么版本的 jQuery?.live()
现已弃用。
抱歉,只是为了确认一下,这个过程是否正确:$ncart=$_SESSION['cart'];
to $ncart=array_values($ncart);
to $_SESSION['cart']=$ncart;
?
我怀疑您必须将 if(count($ncart)==0) 更改为 if(count($_SESSION['cart'])==0)
@MichaelRushton 这只是在从中间删除一个后将该数组中的键重新编号为连续的。这是必要的,因为 PHP 的“数组”类型具有不同寻常但功能强大的特性,同时作为列表/向量和(有序)散列。
【参考方案1】:
我有自己的解决方案:
if (count($_SESSION['cart'])>0)
foreach ($_SESSION['cart'] as $key => $subarray)
if ($subarray['id'] == $_POST['id'])
unset($_SESSION['cart'][$key]);
break;
$_SESSION['cart'] = array_values($_SESSION['cart']);
else
if(count($_SESSION['cart'])==0)
unset($_SESSION['cart']);
unset($_SESSION['cart_total']);
echo "all_empty";
那是因为数组是这样的:
Array
(
[0] => Array
(
[id] => 3
[name] => Collier Ano petit
[price] => 45
[quant] => 1
[ptotal] => 45
)
)
【讨论】:
以上是关于取消设置 php 会话变量的主要内容,如果未能解决你的问题,请参考以下文章