如何在PHP中销毁特定的会话变量?

前端之家收集整理的这篇文章主要介绍了如何在PHP中销毁特定的会话变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在开发购物车系统.它需要用户登录才能访问购物车.所以我写了一些代码禁止访问购物车页面,如果用户没有登录.但是,每当我尝试清空购物车时,我都会退出.我只想破坏购物车会话而不是用户会话.这是我的代码

对于购物车页面

<?PHP
  session_start();
  if(isset($_SESSION['userID'])){

  }
  elseif(!isset($_SESSION['userID'])){
      echo 
      "<script>
        alert('You must be logged in.');
        window.location.href='index.PHP#login'
      </script>";
    }
?>

  <?PHP
    include ('../import/layout.PHP');
  ?>

  <body>

    <div class="site-wrapper" id="index">

      <div class="site-wrapper-inner">

        <div class="cover-container">

          <?PHP
            include ('../import/nav-two.PHP');
          ?>

          <!-- <div class="inner cover">

          </div>

          <div class="mastfoot">
            <div class="inner">
              <p>&copy; 2015 Aroma Chicken House Restaurant,All Rights Reserved.
                 <a class="menu-item pull-right" href="#index">Back to Top</a>
              </p>
            </div>
          </div> -->

        </div>

        <div id="cart">
          <div class="container">
            <?PHP
              include ('../cart/index.PHP');
            ?>
          </div>
        </div>


      </div>

    </div>


  </body>

对于购物车更新:

<?PHP
session_start();
include_once("config/config.PHP");

//empty cart by distroying current session
if(isset($_GET["emptycart"]) && $_GET["emptycart"]==1)
{
    $return_url = base64_decode($_GET["return_url"]); //return url
    session_destroy();
    header('Location:'.$return_url);
}

//add item in shopping cart
if(isset($_POST["type"]) && $_POST["type"]=='add')
{
    $product_code   = filter_var($_POST["product_code"],FILTER_SANITIZE_STRING); //product code
    $product_qty    = filter_var($_POST["product_qty"],FILTER_SANITIZE_NUMBER_INT); //product code
    $return_url     = base64_decode($_POST["return_url"]); //return url

    //MysqLi query - get details of item from db using product code
    $results = $MysqLi->query("SELECT product_name,price FROM products WHERE product_code='$product_code' LIMIT 1");
    $obj = $results->fetch_object();

    if ($results) { //we have the product info 

        //prepare array for the session variable
        $new_product = array(array('name'=>$obj->product_name,'code'=>$product_code,'qty'=>$product_qty,'price'=>$obj->price));

        if(isset($_SESSION["products"])) //if we have the session
        {
            $found = false; //set found item to false

            foreach ($_SESSION["products"] as $cart_itm) //loop through session array
            {
                if($cart_itm["code"] == $product_code){ //the item exist in array

                    $product[] = array('name'=>$cart_itm["name"],'code'=>$cart_itm["code"],'price'=>$cart_itm["price"]);
                    $found = true;
                }else{
                    //item doesn't exist in the list,just retrive old info and prepare array for session var
                    $product[] = array('name'=>$cart_itm["name"],'qty'=>$cart_itm["qty"],'price'=>$cart_itm["price"]);
                }
            }

            if($found == false) //we didn't find item in array
            {
                //add new user item in array
                $_SESSION["products"] = array_merge($product,$new_product);
            }else{
                //found user item in array list,and increased the quantity
                $_SESSION["products"] = $product;
            }

        }else{
            //create a new session var if does not exist
            $_SESSION["products"] = $new_product;
        }

    }

    //redirect back to original page
    header('Location:'.$return_url);
}

//remove item from shopping cart
if(isset($_GET["removep"]) && isset($_GET["return_url"]) && isset($_SESSION["products"]))
{
    $product_code   = $_GET["removep"]; //get the product code to remove
    $return_url     = base64_decode($_GET["return_url"]); //get return url


    foreach ($_SESSION["products"] as $cart_itm) //loop through session array var
    {
        if($cart_itm["code"]!=$product_code){ //item does,t exist in the list
            $product[] = array('name'=>$cart_itm["name"],'price'=>$cart_itm["price"]);
        }

        //create a new product list for cart
        $_SESSION["products"] = $product;
    }

    //redirect back to original page
    header('Location:'.$return_url);
}
?>
关于什么
unset($_SESSION["products"])

而不是

session_destroy()

每个用户只有一个会话.所以没有办法摧毁“特定”会话.您可以做的是删除负责显示购物车的会话内容(如上所示).

原文链接:https://www.f2er.com/php/136590.html

猜你在找的PHP相关文章