PHP 使用 $_SESSION['cart'] 数组制作了购物清单,但数组仍为空

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

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

无论如何,当我点击产品的 link 时,似乎除了 URL 发生变化外什么都没有发生,但是添加到 $_SESSION['cart'] 似乎没有发生.

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

$id 是:$id = get_the_ID(); 来自 WordPress 查询。然而,这部分有效,因为我认为 <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 不知道它是一个参数

var_dump $_SESSION['cart']前后array_push($_SESSION['cart'],$id);并检查值。

您的脚本正在运行。 我将您的代码复制到我服务器上的 PHP-File 中,它正在执行您期望的操作。 我可以将 ID 添加到我的 "cart"。 您的会话是否正常工作? 您的服务器配置有误?