建议你单独写个测试文件,测试设置和删除session,对于当前叶面是否生效。比如cookie,当叶面删除后,如果不转向叶面,下面的流程中,这个cookie的直仍然是有效的。
我记得是这样的。
我记得是这样的。
解决方案 »
- 想学curl........有好途径推荐么?
- PHP Smarty 问题求助!!!!!急,在线等!!!!
- PHP中的session超时如何设置呀,即是一个用户在一段时间内没有操作的话,就会自动提示超时,返回重新登陆,这个功能怎么搞?请高手帮帮我,谢谢
- 请问有没有什么著名的PHP书籍既有中文版又有英文版的?并且都有电子版可下?
- 第一次来web开发区,问个白痴点的问题
- 求 "JScript.Encode" 的php decode 方法。
- 请帮看看这段代码这样写对吗?
- Session与数组的困惑,请大家指正
- 关于MYSQL的安装问题
- pdo 访问SQLSERVER存储过程无法获取结果集
- 纯文本的格式显示
- 请问错在哪里???
你说的“当用户后到首页时,把刚注册的session用unset()删除。”是什么意思,是删除了$_SESSION['selected_item_id']吗?
既然删除了,那段代码当然要执行的。能说一下整体的思路吗?
这样测试一下: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没有生效,检查你的系统设置。
仅仅为了防止重复执行,如果用户要在次执行怎么办?我的建议:
当用户,第一次执行时,记录(比如买了一种东西和数量)
退后或者刷新这段程序重复执行,
if(东西和数量与原来一样)
跳过
else
提示。
现在说一下我的思路:
用户点击购物车,把一本书放入购物车中,数量默认是1,这时用户可以更改数量,也可以点击查看购物车。如果用户点机了查看购物车,从查看购物车程序点后退专到add_items.php
这时我提到的那个函数就开始工作了。他把数量自动加了1 ,应为我的类中是这么设计的,如果这本书已经存在购物车了,用户又点击,那么它的数量增加1。对于这个问题,我的解决办法是这样的:
用户添加到购物车一件物品,用session记录改物品的id号,如果物品的id号没有session记录,在加到购物车中。然后在记录改物品的id。当用户返回首页购物时,把刚才记录的id删除。也就是说在购买新物品的同时删除上次用session记录的id.
数量可以大点的字显示,让用户清清楚楚.明明白白就可以了
刷新的问题,多显示购物车,用户会发现的
最好是这样,比如说
用户选了A物品,购物车中有一行
然后刷新了,或者他再次选择,又出现一行
这样,她就很容易发现了买东西人们都会小心的,是把,
cart
id1 => num
id2 => num
id3 => num
id4 => num
...
userid =>第一次进入创建session
调整商品可在确认购买时进行
<?
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;
}}
?>