【问题标题】:Session Destroy options in shopping cart application购物车应用程序中的会话销毁选项
【发布时间】:2013-08-27 07:26:12
【问题描述】:

大家好,我正在开发一个没有登录和注销选项的 Web 应用程序。这是一个电子商务网站。因此,为了坚持订购不同的产品,我将订单数据保存在会话中。但即使在我关闭浏览器或标签后,会话也不会破坏。我没有明确销毁,所以在这些情况下如何销毁会话。

请提供一些见解。 PHP 开发新手。

session_start();
function addtocart($productid,$quantity,$amount){

    if($productid === "" or $quantity<1) return;

    if(is_array($_SESSION['cart'])){
        if(product_exists($productid)) return;
        $max=count($_SESSION['cart']);
        $_SESSION['cart'][$max]['productid']=$productid;
        $_SESSION['cart'][$max]['quantity']=$quantity;
        $_SESSION['cart'][$max]['amount'] =$amount;
    }
    else{
        $_SESSION['cart']=array();
        $_SESSION['cart'][0]['productid']=$productid;
        $_SESSION['cart'][0]['quantity']=$quantity;
        $_SESSION['cart'][0]['amount']=$amount;
    }
}

function product_exists($pid){

$max=count($_SESSION['cart']);
$flag=0;
for($i=0;$i<$max;$i++){
    if($pid === $_SESSION['cart'][$i]['productid']){
        $flag=1;
        break;
    }
}
return $flag;

}

【问题讨论】:

  • 关闭浏览器通常会结束会话,所以会发生其他事情。您可能需要发布一些代码...

标签: php session shopping-cart


【解决方案1】:

我不确定这一点,但我认为会话变量存储在 cookie 中。这可能是关闭浏览器后会话仍然存在的原因。

看看this 链接。您可以使用session_unset()释放会话变量

【讨论】:

    【解决方案2】:

    只需使用session_destroy(); 这肯定会破坏所有存储的会话

    你可以这样使用它

    if(isset($_POST['destroy_btn']))
        {
         session_destroy();
         header('location: homepage.php'); 
         //redirect or refresh it after destroying the sessions
        }
    

    此外,浏览器还有一个称为会话恢复的选项,它可以在您重新打开浏览器时恢复您的最后一个会话。只需关闭此选项。

    【讨论】:

    • 只有在标签页关闭或浏览器关闭时,我才需要调用这个 session_destroy()。
    • 啊。我认为您必须关闭浏览器的“会话恢复”功能。试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多