SESSION被json销毁

我在php中使用会话来存储我正在构建的网站的购物车数据。 所有数据都以json字符串形式存储,并在两端使用json_encode / json_decode进行编码/解码。

看起来,在一个页面上,json_decode正在删除我的会话数据,这看起来很奇怪。 以下是我将代码范围缩小到的相关代码:

$cart_data = $_SESSION['cart'];
$cart = json_decode($cart_data, 1);

我在测试时一直在var _dumping $ _SESSION ['cart'],它看起来像json_decode正在影响它,即使我没有直接告诉它(没有json_decode转储显示为一串json,它显示为数组)。 这导致会话在页面刷新或导航离开时被破坏。

我有一种感觉,我错过了一件相当简单的事情,但无法发现它


它看起来像你在一个register_globals = on的服务器上运行这个脚本 - 这导致变量$cart被预注册为$_SESSION['cart']的引用(奇怪,但是是true)。 因此,您直接将json_decode()的输出写入会话对象。

治愈这种最好的办法是做关闭register_globals,要么,如果这是不可能的,使用不同的变量名或取消绑定$cartunset($cart); 在分配新值之前。

阅读文档中的更多内容:http://www.php.net/manual/en/reserved.variables.session.php#85448

链接地址: http://www.djcxy.com/p/60231.html

上一篇: SESSION being destroyed by json

下一篇: CTE Recursion to get tree hierarchy