使用会话作为临时购物车
Using session as a temporary cart
我正在建立一个网站,其中我需要一个临时购物车,客户不需要数据库,所以我必须通过会话来处理它。所以我的问题来了:
我已经设置了一个表单,该表单将 post 操作发送到另一个 php 文件并在操作后重定向到另一个页面,我希望该表单作为新表单添加到会话中每次提交的数组,所以我可以在结账时显示所有购物车详细信息,但即使我使用 array_push 我也无法让它工作,它会覆盖以前的数组:
<form class="form-grey" action="<?php bloginfo('template_directory'); ?>/add_cart.php" method="POST">
<input type="hidden" name="bikeName" value="<?php the_title(); ?>">
<div class="row">
<div class="col-sm-3">
<label>Rent From:</label>
<input type="text" id="fromDate" name="fromDate" class="datepicker">
</div>
<div class="col-sm-3">
<label>Rent To:</label>
<input type="text" id="toDate" name="toDate" class="datepicker" disabled>
<button type="submit" name="Submit" class="btn btn-yellow">Add to Cart<span>+</span></button>
我已经缩短了 html 代码。
这是我的add_cart.php
<?php
session_start();
$_SESSION['cart'] = array();
$posts = array(
'fromDate' => $_POST['fromDate'],
'toDate' => $_POST['toDate'],
'bikeName' => $_POST['bikeName'],
'cyclistName' => $_POST['cyclistName'],
'height' => $_POST['height'],
'pedals' => $_POST['pedals'],
'helmets' => $_POST['helmets'],
'total' => $_POST['total']
);
array_push($_SESSION['cart'], $posts);
header("Location: http://localhost:5555/mbr/checkout");
die();
?>
errm,您是否尝试在每次提交表单时将多个产品添加到购物车?因为每次显示的代码与
行一起运行时,您的 $_session['cart']
数据都会被重置
$_SESSION['cart'] = array();
表示购物车数组为空。之前在其中的任何内容都已被清除。
解决方法:删除这一行。
您必须首先检查会话是否尚未设置,如果未设置,则仅将 $_SESSION['cart']
定义为空数组。否则你会不断地覆盖一个空数组。
if(!isset($_SESSION['cart']){
$_SESSION['cart'] = array();
}
我正在建立一个网站,其中我需要一个临时购物车,客户不需要数据库,所以我必须通过会话来处理它。所以我的问题来了:
我已经设置了一个表单,该表单将 post 操作发送到另一个 php 文件并在操作后重定向到另一个页面,我希望该表单作为新表单添加到会话中每次提交的数组,所以我可以在结账时显示所有购物车详细信息,但即使我使用 array_push 我也无法让它工作,它会覆盖以前的数组:
<form class="form-grey" action="<?php bloginfo('template_directory'); ?>/add_cart.php" method="POST">
<input type="hidden" name="bikeName" value="<?php the_title(); ?>">
<div class="row">
<div class="col-sm-3">
<label>Rent From:</label>
<input type="text" id="fromDate" name="fromDate" class="datepicker">
</div>
<div class="col-sm-3">
<label>Rent To:</label>
<input type="text" id="toDate" name="toDate" class="datepicker" disabled>
<button type="submit" name="Submit" class="btn btn-yellow">Add to Cart<span>+</span></button>
我已经缩短了 html 代码。
这是我的add_cart.php
<?php
session_start();
$_SESSION['cart'] = array();
$posts = array(
'fromDate' => $_POST['fromDate'],
'toDate' => $_POST['toDate'],
'bikeName' => $_POST['bikeName'],
'cyclistName' => $_POST['cyclistName'],
'height' => $_POST['height'],
'pedals' => $_POST['pedals'],
'helmets' => $_POST['helmets'],
'total' => $_POST['total']
);
array_push($_SESSION['cart'], $posts);
header("Location: http://localhost:5555/mbr/checkout");
die();
?>
errm,您是否尝试在每次提交表单时将多个产品添加到购物车?因为每次显示的代码与
行一起运行时,您的$_session['cart']
数据都会被重置
$_SESSION['cart'] = array();
表示购物车数组为空。之前在其中的任何内容都已被清除。
解决方法:删除这一行。
您必须首先检查会话是否尚未设置,如果未设置,则仅将 $_SESSION['cart']
定义为空数组。否则你会不断地覆盖一个空数组。
if(!isset($_SESSION['cart']){
$_SESSION['cart'] = array();
}