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

时间:2016-03-01 11:21:51

标签: php arrays wordpress session cart

我目前正在制作会话购物车,我可以添加和删除每个产品下面都有链接的产品。如果您希望它可视化,可以在此处查看:http://www.bgc-testomgeving.nl/sem

无论如何,当我点击产品的链接时,除了URL更改之外似乎没有任何事情发生,但是$_SESSION['cart']的添加似乎没有发生。

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

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

在这里,我检查是否已经有$_SESSION['cart']活动,如果不是,我会创建一个。另外,我检查项目ID是否已经在cart,如果没有,我会执行array_push(),如果是,我会使用未设置。见下面:

<?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并不知道这是一个参数

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

在array_push($ _ SESSION [&#39; cart&#39;],$ id)之前和之后var_dump $ _SESSION [&#39; cart&#39;];并检查值。