PHP 用 $_SESSION['cart'] 数组制作购物清单,但数组保持空


PHP made shopping list with $_SESSION['cart'] array but array stays empty

我目前正在制作一个会话购物车,我可以在其中添加和删除每个产品下方的链接的产品。如果您更喜欢可视化,可以在此处查看:http://www.bgc-testomgeving.nl/sem

无论如何,不知何故,当我单击产品的链接时,除了 URL 更改之外,似乎什么都没有发生,但似乎没有添加到$_SESSION['cart']

这是每个产品下方的链接代码,用于将其添加到购物车:echo '<a href="action=add&id=' .$id. '">Voeg toe </a>';

$id是:来自WordPress查询的$id = get_the_ID();。但是,这部分有效,因为我认为<a>的URL是正确的。

在这里,我检查是否已经有一个$_SESSION['cart']处于活动状态,如果没有,我会制作一个。另外,我检查项目 ID 是否已经在cart 中,如果没有,我会执行array_push(),如果是,我使用 unset。见下文:

<?php session_start(); 
require("dbconnect.php");
?>
<?php 
     if(!isset($_SESSION['cart'])) {
         $cart = array();
         $_SESSION['cart'] = $cart;
     }  
    if(isset($_GET['action']) && $_GET['action']=="add"){             
        $id=intval($_GET['id']); 
                if(in_array($id, $_SESSION['cart'])){
                    if (($key = array_search($id, $_SESSION['cart'] !== false))){
                        unset($_SESSION['cart'][$key]);
                    }
                }
                else {
        array_push($_SESSION['cart'],$id);          
                }
    } ?> 

我打印了页面上$_SESSION['cart']数组和session_id(),以检查它是否适用于index.php中的以下代码:

<?php print "Test session number: "; 
            echo session_id();
            echo '<br>';
            echo serialize($_SESSION['cart']);
            ?>

所以我的问题是,为什么$id没有被推到$_SESSION['cart']

编辑:我发现了问题,我忘了添加一个?到数组,所以 $_GET 不知道它是一个参数

您的脚本正在工作。我将您的代码复制到服务器上的 PHP 文件中,它正在执行您的期望。我可以将ID添加到我的"购物车"。您的会话是否正常工作?您的服务器上有一些错误的配置?

var_dump $_SESSION['购物车']前后array_push($_SESSION['cart'],$id);然后检查值。