PHP - $ _SESSION设置不正确吗?

时间:2016-05-04 02:08:21

标签: php session cart

我正在开设e-commerece网站。我正在使用会话作为我购物车系统的一部分。在主要类别/商店页面上,该网站应加载一个类别中的所有项目,除非它已经在他们的购物车中。如果购物车没有设置/是空的,它会自动加载所有商品。

问题是,即使我将一个项目添加到购物车,它仍会显示它。我想出来,由于某种原因,它没有认识到$ _SESSION [' cart']被设置。这特别奇怪,因为使用$ _SESSION [' cart']的自定义购物车类的标题可以正常工作(它显示正确的项目数。

问题可能是什么?

shop.php

    <?php
include("header.php");
$catID = $_GET['cat'];
$db = new pdoAccess("localhost","root","");
$items = $db->getItemsByCategory($catID, "stock");
$category = $db->getCategoryName($catID, "categories");
?>
<div id='mainContent'>

<div class='row'>
<h2 class="categoryHeader"> <?php echo $category;?></h2>
</div>

<?php 
foreach($items as $item) {
if(!isset($_SESSSION['cart'])) {
echo "<h2>Cart Not Set!</h2><div class='col-sm-4 well'><div class='row'><img class='img-responsive' src='img/items/$item->image'></div><div class='row itemTitle'><a href='item.php?id=$item->id'>$item->name</a></div><div class='row price'>Price: $item->price</div><div class='row condition'>Condition: $item->condition</div> </div>";
} else {
if(array_search($item->id, $_SESSSION['cart']) == false) { // the item is not in the cart
echo "<h2>" . $_SESSSION['cart'] . "</h2>";
echo "<div class='col-sm-4 well'><div class='row'><img class='img-responsive' src='img/items/$item->image'></div><div class='row itemTitle'><a href='item.php?id=$item->id'>$item->name</a></div><div class='row price'>Price: $item->price</div><div class='row condition'>Condition: $item->condition</div> </div>";

}

}
}
?>

</div>

<?php 
include("footer.php");
?>

addCart.php

    <?php
include("header.php");
$itemID = $_GET['itemID'];
$catID = $_GET['catID'];

if(isset($_SESSION['cart'])) {
array_push($_SESSION['cart'], $itemID);
} else {
$_SESSION['cart'] = array($itemID);
}

?>

<a href="shop.php?cat=<?php echo $catID; ?>">Continue Shopping?</a> 
<a href="cart.php">Checkout</a>

item.php

  <?php
include("header.php");
$itemID = $_GET['id'];
$db = new pdoAccess("localhost","root","");
$item = $db->getItemDetails($itemID, "stock");

$category = $db->getCategoryName($item->category, "categories");
?>
<div id='mainContent'>

<div class='row'>
<h2 class="itemHeader"> <?php echo $item->name; ?> </h2>
</div>
<div class="row">
<div class='col-md-6'>
<img class='img-responsive' src="img/items/<?php echo $item->image;?>">
</div>
<div class='well col-md-6'><ul><li>Platform: <?php echo $category; ?> </li>
<li>Condition: <?php echo $item->condition; ?></li>
<li>Price: <?php echo $item->price; ?></li>
<//ul>
</div>
</div>

<div class="row">
<div class="col-md-8">
<p><?php echo $item->description; ?></p>
</div>
<div class="col-md-4">
<form action="addCart.php" method='get'>
<input type='hidden' name='itemID' value="<?php echo $item->id;?>" />
<input type='hidden' name='catID' value="<?php echo $category;?>" />
<input type='submit' class="addToCart" value="Add to Cart">
</form>
</div>
</div>

<?php 
include("footer.php");
?>

的header.php

   <?php
session_start();
include("pdo.php");
$cart = new cart();
$itemCount = $cart->getItemCount();

?>

<!doctype html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="scripts/main.js" /></script>
<script   src="http://code.jquery.com/jquery-1.12.3.min.js"   integrity="sha256-aaODHAgvwQW1bFOGXMeX+pC4PZIPsvn2h1sArYOhgXQ="   crossorigin="anonymous"></script>
<script src="scripts/bootstrap.js" /></script>
<link href="styles/bootstrap.css" rel="stylesheet" type="text/css" />
<link href="styles/base.css" rel="stylesheet" type="text/css" />

</head>

<body>
<div class="container">

<!-- Begin Header -->
<header>
<nav class='navbar navbar-inverse'>
<div class='navbar-header'>
<button class='navbar-toggle' data-toggle='collapse' data-target='headerNav'>
<span class='glyphicon glyphicon-plus-sign' />
</button>
<a class='navbar-brand' href='index.php'><img class='img-responsive' src='logo.png' /></a>
</div>
<div class='collapse navbar-collapse' id='headerNav'>
<ul class='nav navbar-nav'>

<li class='dropdown'>
<a class='dropdown-toggle' data-toggle="dropdown" href="#">Console<span class='glyphicon glyphicon-plus'></span></a>
<ul class='dropdown-menu'>
<li><a href="shop.php?cat=1">Playstation</a></li>
<li><a href="shop.php?cat=2">Wii</a></li>
<li><a href="shop.php?cat=3">Gamecube</a></li>
<li><a href="shop.php?cat=4">N64</a></li>
<li><a href="shop.php?cat=5">Other</a></li>
</ul>
</li>

<li class='dropdown'>
<a class='dropdown-toggle' data-toggle="dropdown" href="#">Portable<span class='glyphicon glyphicon-plus'></span></a>
<ul class='dropdown-menu'>
<li><a href="shop.php?cat=6">Nintendo DS</a></li>
<li><a href="shop.php?cat=7">GB/GBC/GBA</a></li>
<li><a href="shop.php?cat=8">Other</a></li>
</ul>
</li>

<li><a href="shop.php?cat=9">Videos</a></li>
</ul>

<ul class="nav navbar-nav navbar-right">
<li><a href="cart.php">Cart</a> (<?php if($itemCount >= 1) {echo $itemCount;} else {echo "0";} ?> )</li>
<li><a href="contact.php">Contact</a></li>
</ul>
</div>

</nav>







</header>

...和购物车类:

class cart {

public $items = array();


function __construct() {
$pdo = new pdoAccess("localhost","root","");
$counter = 0;
if (isset($_SESSION['cart'])) {  foreach($_SESSION['cart'] as $item) {
$items[$counter] = $pdo->getItemDetails($item, "items");
$counter++;
}
}
}

public function emptyCart() {
session_unset();
session_destroy();
}

public function removeItem($itemID) {
$index = array_search($itemID, $_SESSION['cart']);
unset($_SESSION['cart'][$index]);
}

public function getItemCount() {
if(isset($_SESSION['cart'])) {
return count($_SESSION['cart']);
} else {
return 0;
}
}

public function getSubtotal() {
$total = 0;

foreach($items as $item) {
$total += $item->price;
}

return $total;

}

public function getDiscount() {
$sub = $this->getSubtotal();
if($this->getItemCount >= 2) {
$discount = $sub * .1;
} else {
$discount = 0;
}
return $discount;
}

public function getTotal() {
$sub = $this->getSubtotal;

if($this->getItemCount >= 2) {
$sub +- $this->getDiscount;
}

$total = $sub + SHIPPING;
return $total;


}
}

我将不胜感激任何帮助。提前谢谢!

0 个答案:

没有答案