可序列化对象从会话中消失,但不在localhost上消失

时间:2015-06-12 14:35:56

标签: php class session serialization

我有一个实现可序列化的购物车对象,它在我的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>

0 个答案:

没有答案