PHP会话值发生了巨大变化


PHP Session value is change dramatically

我有两个php文件,会话正在奇怪地更改数据,无法理解php会话的行为。帮助我理解这种情况。

我知道这不是正确的编码方式,如果我使用id1或会话的另一个密钥名称(即$_session['id1']),我的问题也会得到解决,但我只想知道php中的会话行为。

index.php

<body>
        <?php
        session_start();
        if(isset($_SESSION["product"]))
       print_r($_SESSION["product"]);
        ?>
        <a href="product.php?id=1">product 1</a>
           <a href="product.php?id=2">product 2</a>
    </body>

product.php

<?php
session_start();
 if(isset($_SESSION["product"]))
    print_r($_SESSION["product"]);
if(isset($_GET['btnsubmit']))
{
    $id=$_SESSION['id'];
    $array=array();
    if(isset($_SESSION["product"]))
    {
        $array=$_SESSION["product"];
    }
    $onearay=array();
    $onearay["pname"]=$_SESSION["id"];
    $onearay["qty"]=1;
    $array[]=$onearay;
   $_SESSION["product"]=$array;
   header("location:index.php");
}
?>
<form>
    <input type="submit" name="btnsubmit" value="submit"/>
</form>
<?php
$_SESSION["id"]=$_GET["id"];
echo "<br/>";
 if(isset($_SESSION["product"]))
  print_r($_SESSION["product"]);
?>

当产品2在我的会话中并且我正在使用product.php打开页面时输出?id=1

Array ( [0] => Array ( [pname] => 2 [qty] => 1 ) )

此处的提交按钮显示

Array ( [0] => Array ( [pname] => 1 [qty] => 1 ) )

它将帮助您拥有一系列独立于站点代码执行cart工作的函数(或类)。我认为这将有助于更好地组织代码。

<?php
// ===== NEEDS TO GO AT TOP OF PAGE FROM HERE =====//
function ShoppingCart()
    {
        // If action add to cart
        if(isset($_REQUEST['add']))
            AddToCart();
        // Add more actions / functions
    }
function AddToCart()
    {
        // If a product id is set add quantity
        if(isset($_REQUEST['id']) && is_numeric($_REQUEST['id'])) {
                // Set the default qty value
                $qty = (isset($_REQUEST['qty']) && is_numeric($_REQUEST['qty']))? $_REQUEST['qty']:1;
                $_SESSION['cart'][$_REQUEST['id']]['qty'] = (isset($_SESSION['cart'][$_REQUEST['id']]))? ($qty+$_SESSION['cart'][$_REQUEST['id']]['qty']): $qty;
            }
    }
session_start();
// Create cart session instance
ShoppingCart();
// ===== NEEDS TO GO AT TOP OF PAGE TO HERE =====//
print_r($_SESSION); ?>
<form>
    <input type="hidden" name="id" value="123"/>
    <input type="hidden" name="qty" value="1"/>
    <input type="submit" name="add" value="ADD TO CART"/>
</form>

给你

Array
(
    [cart] => Array
        (
            [123] => Array
                (
                    [qty] => 1
                )
        )
)