php empty()错误地认为$ _SESSION不是空的

时间:2014-01-29 11:58:27

标签: php session

在购物车设置在$_SESSION['shopping_cart'] array的在线商店中,我在页面顶部进行了此检查:

session_start();
if (empty($_SESSION['shopping_cart'])) {
   //Not granting access for users with empty carts or when the session has expired
    header('Location: toanotherpage');
    exit;
}

这一切都运作良好,直到没有。由于某种原因,在结帐页面上花费了太多时间的用户已经使会话过期,但它仍然以某种方式在页面顶部的empty()检查中滑落。这一切都发生在表单提交后重新加载页面。这意味着用户已被收费,但由于会话为空,无法生成订单确认和收据。

是否会发生empty()错误地将过期的会话误认为是空的?或者它理论上可以是在脚本执行时会话被破坏所以当检查完成时会话不是空的吗?

由于

1 个答案:

答案 0 :(得分:1)

试试这个,

if (!isset($_SESSION['shopping_cart']) || count($_SESSION['shopping_cart'])==0) {

而不是

 if (empty($_SESSION['shopping_cart'])) {