我試圖用PHP創建一個購物籃,我可以添加項目,清除整個購物籃,但是當我試圖從籃子中刪除一件商品時,我被卡住了。我嘗試發送一個GET變量到URL中,然後根據它的ID減少指定項目的數量。雖然目前看起來似乎不起作用,並且如果我多次點擊,URL變得巨大,並且GET變量不斷被添加到結尾,而不是更改整個URL。從購物籃中刪除商品PHP
這是我的PHP
<?php if(isset($_SESSION["cart"])) {
foreach ($_SESSION["cart"] as $id => $value) {
$ids .= $id . ',';
$count += $value['quantity'];
$totalPrice += $value['price'];
}
$query = $database->find_item_db($ids);
foreach ($query as $single_query) {
$id = $single_query['Sweet_ID'];
echo $single_query['Description']; ?> x <?php echo $_SESSION['cart'][$id]['quantity'] . '<a href=' . $_SERVER['REQUEST_URI'] .'&idToRemove=' . $id . '&action=remove> Remove </a>' . '</br>';
} ?>
<h3>Currently <?php echo $count; ?> Items in the basket</h3>
<h4> Total Price £<?php echo $totalPrice; ?> </h4>
<?php
} else {
echo "Your cart is empty";
}
?>
<?php
session_start();
if ($_GET['action'] == "add") {
$idNumber=intval($_GET['id']);
if (isset($_SESSION['cart'][$idNumber])) {
$_SESSION['cart'][$idNumber]['quantity']++;
} else {
$sql = $database->display_single($idNumber);
$second_id = $sql[0]['Sweet_ID'];
$price = $sql[0]['Price'];
$_SESSION['cart'][$second_id]=array(
"quantity" => 1,
"price" => $price
);
}
} else if ($GET['action'] == 'remove') {
$idNumber=intval($_GET['idToRemove']);
$_SESSION['cart'][$idNumber]['quantity']--;
} else if ($_GET['action'] == 'clear') {
unset($_SESSION['cart']);
}
?>
我注意到的第一件事情是:在發送標題並在初始化之前使用它之後開始會話。然後,語法,樣式和使用函數看起來不安全,看起來像XSS泄漏給我,我猜也是SQL注入。 – DanFromGermany