2013-04-10 64 views
-2

我正在购物车应用程序上工作。当用户选择特定产品时,该产品的ID,数量和价格将存储在会话中。但是,当我关闭浏览器时,$ _SESSION ['cart']中的所有数据都被删除,但我希望当我再次访问我的网站时,应显示最后选择的实体。我使用的价格,数量和产品ID为 -如何设置购物车的一天

<? 
$_SESSION['cart'] = array(); 
$_SESSION['cart'][0]['productId'] = $pid; 
$_SESSION['cart'][0]['qty'] = 1; 
$_SESSION['cart'][0]['price'] = $price 
?> 

请告诉我怎么即使在关闭浏览器后,在会话中选择的值保留。如果你有其他方法?谢谢。

回答

1

显然,将数据保存到cookie或数据库!
会话持续到超时(如果有)或关闭浏览器时。

+0

有什么办法让我可以把我的车时间为一天。 – nitin7805 2013-04-10 06:39:37

+0

你还没有看过我的回答,是吗? – 2013-04-10 06:40:58

0

当你设置会话数据只是设置与它一起一个cookie:

setcookie('cart' , true, time()+60*60*24*7); 
setcookie('productID' , $pid, time()+60*60*24*7); 
setcookie('qty' , '1', time()+60*60*24*7); 
setcookie('price' , $price, time()+60*60*24*7); 

不是全局头检查中看到,如果一个人没有登录(通过会话变量存在),如果他们不是,请检查cookie是否存在,如果存在,请通过它填充您的购物车。

您当然需要启动一个新的会话,但这不在此问题的范围之内。

0

您可以在您的php.ini中看到session.cookie_lifetime。它默认为0。我想这就是为什么当浏览器关闭时你的会话过期。

将其设置为86400,将会话cookie的生存期设置为一天,然后重新检查您的网站。我认为它会解决你的问题。

Have a look here

php.net article

+0

这是不正确的。会话在关闭浏览器时总是被破坏。 – 2013-04-10 06:52:38

+0

会话存储在服务器中。除非浏览器在关闭时告诉服务器,否则我认为会话将​​存在。 – 2013-04-10 06:58:00

+0

正确,它们存储在服务器端,但浏览器重新启动后无法重新获得它们。 – 2013-04-10 07:00:15