我有一个实现可序列化的购物车对象,它在我的localhost上工作正常,但是当我将它上传到实时服务器时它停止正常工作。
当我将产品添加到购物车和print_r($ _ SESSION)时,我可以看到产品已成功添加,但当我刷新页面时,它们就消失了。这仅适用于实现可序列化的对象。这些相同的对象在我的localhost上完美运行,它具有IDENTICAL代码,并且它让我疯狂。
这是php 5.5和5.6之间会话处理的区别吗?
我正在使用spl_autoload_register来加载我的类,如果它有帮助的话(它们都不会在会话中显示为incomplete_class或类似的东西)。
我还注意到会话保存路径在实时版本上是空白的,但是在我的localhost上设置 - 但其余的会话功能完美 - 只有当它包含可序列化的类时才会消失。< / p>
在我谋杀某人之前请帮忙......
好的,这里是代码:
购物车类:
1
页面上的代码:
class shoppingCart implements Serializable
{
private $products, $error;
function __construct()
{
}
function addProduct($productCode, $quantity = 1)
{
include_once ('include/requests.php');
$productInfo = requestPostData('getProductList');
if (in_array(strtoupper($productCode), $productInfo['results']) == true)
{
if (isset($this->products[strtoupper($productCode)]))
{
$this->products[strtoupper($productCode)] = $this->products[strtoupper($productCode)] + $quantity;
return true;
}
else
{
$this->products[strtoupper($productCode)] = $quantity;
return true;
}
}
else
{
$this->error = 'Product '.$productCode.' could not be found.';
}
}
function editProduct($productCode, $quantity)
{
if (isset($this->products[strtoupper($productCode)]))
{
$this->products[strtoupper($productCode)] = $quantity;
}
}
function removeProduct($productCode)
{
if (isset($this->products[strtoupper($productCode)]))
{
unset($this->products[strtoupper($productCode)]);
}
}
public function getProducts()
{
if (count($this->products) >= 1)
{
return $this->products;
}
else
{
return false;
}
}
public function isInCart($productCode)
{
if (isset($this->products[strtoupper($productCode)]))
{
return true;
}
else
{
return false;
}
}
public function getQuantity($productCode)
{
if (isset($this->products[strtoupper($productCode)]))
{
return $this->products[strtoupper($productCode)];
}
else
{
return 0;
}
}
public function getError()
{
$error = $this->error;
return $error;
}
public function resetError()
{
$this->error = '';
}
public function serialize()
{
$dataArray = array('products' => $this->products, 'error' => $this->error);
return serialize($dataArray);
}
public function unserialize($data)
{
$dataArray = unserialize($data);
$this->products = $dataArray['products'];
$this->error = $dataArray['error'];
}
}
如果我在添加产品后在页面底部打印__($ _ SESSION),那么它会在会话中显示...但是一旦我刷新它就会消失:&#39;(< / p>