【发布时间】:2021-09-17 12:11:03
【问题描述】:
您好,我有一辆购物车,我想通过会话更新数量
这是我失败的尝试
我试过了,但同样的问题是什么都没有改变
<?php
foreach($_SESSION as $product)
{
?> <form action='' method='POST'> <?php
foreach($product as $key => $value)
{
if($key == 0)
{
?> <input type='text' name='pro<?php echo $key ?>' value='<?php echo $value ?>'> <?php
}
else if($key == 1)
{
?> <input type='text' name='pro<?php echo $key ?>' value='<?php echo $value ?>'> <?php
$prix = $value;
}
else if($key == 2)
{
?> <input type='text' name='pro<?php echo $key ?>' value='<?php echo $value ?>'> <?php
$quantity = $value;
}
}
?>
<?php echo $prix * $quantity ?>
<input type='submit' name='event' value='Update' >
<input type='submit' name='event' value='Delete'>
</form>
<?php
}
?>
<?php
if(isset($_POST['event']))
{
$name = $_POST['pro0'];
$price = $_POST['pro1'];
$quantity = $_POST['pro2'];
if($_POST['event'] == "Update")
{
$_SESSION[$name] = array($name,$price,$quantity);
header('location:index.php?action=updated');
}
else if($_POST['event'] == "Delete")
{
unset($_SESSION[$name]);
header('location:index.php?action=deleted');
}
}
?>
我试过这个,但同样的问题是什么都没有改变,但是 请帮助我,因为这个问题困扰着我
【问题讨论】:
-
我看到您使用您的
a标记发出获取请求,但是您希望如何将值获取到您的POST数组中?你缺少很多代码 -
也永远不要将所有产品详细信息存储到会话中。就像在您的代码中一样,用户可以通过更改发布的价格来编辑产品的价格。您可以更好地将购物车(仅产品 ID 和数量)存储到数据库中,并将购物车 ID 存储到会话或 cookie 中
-
嗨 Baracuda078,感谢您的评论,这意味着用户可以通过更改产品价格来入侵网站,但普通用户不能这样做。但是问题来了,如何更改会话中的产品数量?
-
我现在有点忙,如果我周末有时间我会看看如果我能找到一个简单的解决方案来解决你的问题
-
if($_POST['action'] == "update") { foreach($_SESSION["shopping_cart"] as $keys => $values) { if($_SESSION["shopping_cart" ][$keys]['product_id'] == $_POST["product_id"]) { $_SESSION["shopping_cart"][$keys]['product_quantity'] = $_SESSION["shopping_cart"][$keys][ 'product_quantity'] + $_POST["product_quantity"]; } } }