我们在自定义和旧版opencart中从购物车中删除某些商品时遇到问题。在我们的网站中,购物车以会话形式存储在会话中:
[product_id:options] => $quantity
问题似乎是选项数据的一部分包含新行,这意味着会话数据看起来像这样。
Array
(
[808: yyuu
.3959: yyuu
.3959] => 1
)
当客户尝试删除产品时,密钥会发送到服务器,但却找不到数组密钥
808: yyuu
.3959: yyuu
.3959
作为索引。
新行字符可以用作数组索引吗?
答案 0 :(得分:0)
您拥有的选项是将其更改为当前行为 - 其中选项不再是可读方式(数组),但它们被编码为Base64
,如此(system/library/cart.php::add()
,OC v.1.5 1.5.1):
if (!$option) {
$key = (int)$product_id;
} else {
$key = (int)$product_id . ':' . base64_encode(serialize($option));
}
然后带有选项的购物车中的产品钥匙如下所示
123:SDFD /的GHDs%RFW $ ET35&安培; TSF ^ WRT3 @ 5YIWFHLDSFW / ETE4 =
然后可以通过以下代码从此键获取编码选项:
$product = explode(':', $key);
$product_id = $product[0];
// Options
if (isset($product[1])) {
$options = unserialize(base64_decode($product[1]));
} else {
$options = array();
}
这些更改可能必须通过系统库Cart
在更多地方实施。
现在在数组中找到这些键不会有问题,因为它永远不会包含白色字符(\n\r\t\s
)。