Php 将会话用作临时购物车

Php 将会话用作临时购物车,php,session,Php,Session,我正在建设一个网站,在那里我需要一个临时购物车,客户不想要数据库,所以我必须处理它的会话。所以我的问题来了: 我已经设置了一个表单,它将post操作发送到另一个php文件,并在操作后重定向到另一个页面。我希望在每次提交时将表单作为新数组添加到会话中,这样我可以在签出时显示所有购物车详细信息,但即使使用array_push,我也无法使其工作,它会覆盖以前的数组: <form class="form-grey" action="<?php bloginfo('template_direc

我正在建设一个网站,在那里我需要一个临时购物车,客户不想要数据库,所以我必须处理它的会话。所以我的问题来了:

我已经设置了一个表单,它将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();

?> 

嗯,您是否试图在每次提交表单时向购物车添加多个产品?因为每次显示的代码与行一起运行时,$\u会话['cart']数据都会被重置

   $_SESSION['cart'] = array();
表示购物车数组为空。以前在里面的任何东西都被清除了


解决方案:删除此行

必须首先检查会话是否尚未设置,如果未设置,则仅将$\u会话['cart']定义为空数组。否则将持续覆盖空数组

if(!isset($_SESSION['cart']){
    $_SESSION['cart'] = array();
}

通常这是通过饼干和一杯牛奶来完成的;