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"。
您的会话是否正常工作?
您的服务器配置有误?
我目前正在制作一个会话购物车,我可以在其中添加和删除每个产品下方带有 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"。 您的会话是否正常工作? 您的服务器配置有误?