购物车不响应空PHP
我的购物车从不回显为空,即使值为0。 我错过了什么?请给我指一下正确的方向。 我试图移动else语句,但这只会导致页面错误购物车不响应空PHP,php,Php,我的购物车从不回显为空,即使值为0。 我错过了什么?请给我指一下正确的方向。 我试图移动else语句,但这只会导致页面错误 <?php session_start(); include "cart.php"; include "style.php"; if (isset($_GET['add'])) { $_SESSION['id'.$_GET['add']]++; } if (isset($_GET['empty'])) { $_SESSION['id_'.$_G
<?php
session_start();
include "cart.php";
include "style.php";
if (isset($_GET['add'])) {
$_SESSION['id'.$_GET['add']]++;
}
if (isset($_GET['empty'])) {
$_SESSION['id_'.$_GET['empty']]--;
session_unset();
}
function cart() {
echo "<h3>Shopping cart!</h3>";
echo "<table>
<tr>
<td>Product</td>
<td>Quantity</td>
<td>Price</td>
<td><a href='shoppingcart.php?empty=$name'>[Empty]</a></td>
</tr>";
foreach($_SESSION as $name => $value) {
if ($value > 0) {
echo "<table><tr><td>$name</td><td>$value</td></tr></table>";
}
else {
echo "Cart is empty";
}
}
}
?>
会话不是购物车,购物车也不是会话。购物车本质上应该是一个包含数组的会话属性 以下是基本思想(从代码开始):
购物车!
产品
量
价格
要清除所有会话变量还是销毁会话?两者之间有区别。这是一个可怕的推车设计。会话['cart']=array()如何代码>然后构建一个数组并将其放入其中。并在检索购物车时检索数组。您不希望用户确定会话变量的名称(即,$\u session['id.$\u GET['add']]
)……这可能是一个安全漏洞。可怕的代码设计:/感谢您的输入,我对这一点非常陌生,非常感谢您的输入。我很想知道为什么我的“else”语句不起作用,因为这是我的主要问题@developerjkno,您的主要问题是这是完全错误的。会话不是购物车,购物车也不是会话。您不会将购物车的不同项目放在不同的会话属性中。而且,您也不会为了清理购物车而取消整个会话。你需要从头开始做正确的事情。
<?php
session_start();
//create default empty cart
$cart = array();
if(isset($_SESSION['cart']))
{
//get the cart from the session
$cart = $_SESSION['cart'];
}
if (isset($_GET['add']))
{
$cart[] = $_GET['add']; //add to cart array
}
if (isset($_GET['empty']))
{
$cart = array(); //set cart array to empty array
}
//put the cart in the session
$_SESSION['cart'] = $cart;
function cart()
{
?>
<h3>Shopping cart!</h3>
<table>
<tr>
<td>Product</td>
<td>Quantity</td>
<td>Price</td>
<td><a href='shoppingcart.php?empty=true'>[Empty]</a></td>
</tr>
<?php
if(empty($cart))
{
echo "Cart is empty";
}
else
{
echo "<table>";
foreach($cart as $name => $value)
{
echo "<tr><td>$name</td><td>$value</td></tr>";
}
echo "</table>";
}
}