建议你单独写个测试文件,测试设置和删除session,对于当前叶面是否生效。比如cookie,当叶面删除后,如果不转向叶面,下面的流程中,这个cookie的直仍然是有效的。
我记得是这样的。

解决方案 »

  1.   

    在程序开始处已经加了session_start();
      

  2.   

    还没有解决啊?
    你说的“当用户后到首页时,把刚注册的session用unset()删除。”是什么意思,是删除了$_SESSION['selected_item_id']吗?
    既然删除了,那段代码当然要执行的。能说一下整体的思路吗?
      

  3.   

    那可能是你的session设置不对,session根本就没有生效。
    这样测试一下:1.php
    ----------------------------
    <?php
      session_start();
      $_SESSION['var1'] = 'Hello,world!';
    ?>
    <a href="2.php">2.php</a>
    -----------------------------2.php
    -----------------------------
    <?php
      session_start();
      print($_SESSION['var1']);
    ?>
    -----------------------------先运行1.php,然后点击链接进入2.php页面。如果不显示“Hello,world!”则说明你的session没有生效,检查你的系统设置。
      

  4.   

    你说的不是很明白,
    仅仅为了防止重复执行,如果用户要在次执行怎么办?我的建议:
    当用户,第一次执行时,记录(比如买了一种东西和数量)
    退后或者刷新这段程序重复执行,
    if(东西和数量与原来一样)
     跳过
    else
     提示。
      

  5.   

    我也关注这个问题 但是目前好像没什么好的解决办法解决的思路我想这样:当这段代码被重复执行的时候,给用户自己判断是否要重新执行一次用session来记录一个页面被刷新的次数 大家都说说看法吧
      

  6.   

    看了下17173的解决办法:点击购买按钮 提交给处理程序add_item 然后在购物车里加上一本书 这时候跳转执行quant_item显示购物车里所买的商品 同时有修改数量和取消一种商品购买的按钮 用户根本无法刷新add_item这个程序是不是一个解决的思路呢
      

  7.   

    这个的确是个思路,我也想过,在查看购物车的程序中有三个按钮,删除、更改数量、确认购买。按钮太多了。用户有的不知所措。
    现在说一下我的思路:
    用户点击购物车,把一本书放入购物车中,数量默认是1,这时用户可以更改数量,也可以点击查看购物车。如果用户点机了查看购物车,从查看购物车程序点后退专到add_items.php
    这时我提到的那个函数就开始工作了。他把数量自动加了1  ,应为我的类中是这么设计的,如果这本书已经存在购物车了,用户又点击,那么它的数量增加1。对于这个问题,我的解决办法是这样的:
    用户添加到购物车一件物品,用session记录改物品的id号,如果物品的id号没有session记录,在加到购物车中。然后在记录改物品的id。当用户返回首页购物时,把刚才记录的id删除。也就是说在购买新物品的同时删除上次用session记录的id.
      

  8.   

    我觉得可以像china-pub.com一样,用户每一次点选了什么,都出现购物车的清单
    数量可以大点的字显示,让用户清清楚楚.明明白白就可以了
    刷新的问题,多显示购物车,用户会发现的
    最好是这样,比如说
    用户选了A物品,购物车中有一行
    然后刷新了,或者他再次选择,又出现一行
    这样,她就很容易发现了买东西人们都会小心的,是把,
      

  9.   

    楼主的思路有点问题。“当用户返回首页购物时,把刚才记录的id删除。也就是说在购买新物品的同时删除上次用session记录的id”这两个id不是同一个吗?_SESSION
      cart
        id1 => num
        id2 => num
        id3 => num
        id4 => num
        ...
      userid =>第一次进入创建session
    调整商品可在确认购买时进行
      

  10.   

    这两个id不是同一个id,我的物品的id都是唯一的。
      

  11.   

    既然php是开放原码,我把我的购物车的类帖出来让来,请大家一起完善。
    <?
    define("_CART_INC","exists");
    //借阅车类
    class BCart
    {
     var $SortCount;//书的种类数
     var $TotalCost;//书总价值
     var $Id = Array();//书的唯一编号(数组)
     var $DelId = Array();//要删除的id号(数组)
     var $Bcount = Array(); //数量(数组)
     var $Price = Array();//书的单价(数组)
    // var $LastId = Array();//最后一个加到购物车中的物品id
    /*--构造函数--*/
    function BCart()
    {
     $this->SortCount = 0;
     session_start();//初始化一个session
     $this->Update();
     $this->Calculate();
    }
    /*--根据session的值更新类中的响应数据--*/
    function Update()
    {
     if(!isset($_SESSION['sId']) or !isset($_SESSION['sBcount']) or !isset($_SESSION['sPrice']))
     return;
     $this->Id = $_SESSION['sId'];
     $this->Bcount = $_SESSION['sBcount'];
     $this->Price = $_SESSION['sPrice'];
     $this->SortCount = count($_SESSION['sId']);
     //$this->DelId = $_SESSION['sDelId'];}
    /*--计算书的总价值--*/
    function Calculate()
    {
       for($i=0;$i<$this->SortCount;$i++)
       {
         $this->TotalCost += sprintf("%0.2f",$this->Price[$i] * $this->Bcount[$i]);
       }
    }
    /*--加一件商品--*/
    /*用户数据接口,记录商品的ID和数量*/
    function Add($a_Id,$a_Count,$a_Price)
    {
     $k = count($_SESSION['sId']);
     for($i=0;$i<$k;$i++)
     {
       //检查是否已经加入了该书
      if($_SESSION['sId'][$i] == $a_Id)
      {
        $_SESSION['sBcount'][$i] += $a_Count;
        break;
      }
     }
     if($i >= $k)
      {
      //如果没有则加入该书
       $_SESSION['sId'][] = $a_Id;
       $_SESSION['sBcount'][] = $a_Count;
       $_SESSION['sPrice'][] = $a_Price;
      } $this->Update(); //更新一下类成员数据
     $this->Calculate();
    }
    /*--删除一本书--*/
    function Remove($a_id)
    {
      for($i=0; $i < count($_SESSION['sId']); $i++)
      {
        if($_SESSION['sId'][$i] == $a_id)
        {
          $_SESSION['sId'][$i] = 0;
          $_SESSION['sBcount'][$i] = 0;
          $_SESSION['sPrice'][$i] = 0;
          break;
        }
      }$this->Update();
    $this->Calculate();
    return true;
    }
    /*--记录选中要删除的书--*/
    function Reg_Selected($a_DelId)
    {
      $k = count($_SESSION['sDelId']);
      $_SESSION['sDelId'][$k] = $a_DelId;
    }/*--删除选中的书--*/
    function Del_Selected()
    {
      $j = count($_SESSION['sDelId']);
      for($i=0;$i<$j;$i++)
      {
       for($x=0;$x<count($_SESSION['sId']);$x++)
       {
        if($_SESSION['sDelId'][$i] == $_SESSION['sId'][$x])
        {
           $_SESSION['sId'][$x] = 0;
           $_SESSION['sBcount'][$i] = 0;
           $_SESSION['sPrice'][$i] = 0;
        }
      }
    }
    unset($_SESSION['sDelId']);
    $this->Update();
    $this->Calculate();
    return true;
    }/*--改变书的数量--*/
    function ModifyCount($a_i,$a_Count)
    {
     $_SESSION['sBcount'][$a_i] = $a_Count;
     $this->Update();
     $this->Calculate();
     return true;
    }/*--清空所有书目--*/
    function RemoveAll()
    {
     unset($_SESSION['sId']);
     unset($_SESSION['sBcount']);
     unset($_SESSION['sPrice']);
     $this->SortCount = 0;
     $this->TotalCost = 0 ;
    }
    /*--访问每本书的数量--*/
    function vist_count($i)
    {
     return $this->Bcount[$i];
    }
    /*--判断该书是否已经存在--*/
    function Exists($a_id)
    {
      for($i=0; $i<$this->SortCount; $i++)
      {
        if($this->Id[$i]==$a_id)
        return TRUE;
      }
    return FALSE;
    }
    /*--得到书在篮内的位置--*/
    function IndexOf()
    {
     for($i=0; $i<$this->SortCount; $i++)
      {
       if($this->Id[$i]==$id)
       return $i;
      }
    return 0;
    }
    /*--取一本书的ID--*/
    function Item($i)
    {
      //return $this->Id[$i];
      $_result['id'] = $this->Id[$i];
      $_result['bcount'] = $this->Bcount[$i];
      $_result['price'] = $this->Price[$i];
      return $_result;
    }
    //取出书的种类数
    function CartCount()
    {
    return $this->SortCount;
    }
    //得到一种书的数量
    function ShowBcount()
    {
     $k = count($_SESSION['sBcount']);
     return $_SESSION['sBcount'][$k-1];
    }
    //的到书的总价值
    function GetTotalCost()
    {
      return $this->TotalCost;
    }}
    ?>