请大家看看我的这段代码怎么不能正常工作?SESSION问题! 建议你单独写个测试文件,测试设置和删除session,对于当前叶面是否生效。比如cookie,当叶面删除后,如果不转向叶面,下面的流程中,这个cookie的直仍然是有效的。我记得是这样的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在程序开始处已经加了session_start(); 还没有解决啊?你说的“当用户后到首页时,把刚注册的session用unset()删除。”是什么意思,是删除了$_SESSION['selected_item_id']吗?既然删除了,那段代码当然要执行的。能说一下整体的思路吗? 那可能是你的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没有生效,检查你的系统设置。 你说的不是很明白,仅仅为了防止重复执行,如果用户要在次执行怎么办?我的建议:当用户,第一次执行时,记录(比如买了一种东西和数量)退后或者刷新这段程序重复执行,if(东西和数量与原来一样) 跳过else 提示。 我也关注这个问题 但是目前好像没什么好的解决办法解决的思路我想这样:当这段代码被重复执行的时候,给用户自己判断是否要重新执行一次用session来记录一个页面被刷新的次数 大家都说说看法吧 看了下17173的解决办法:点击购买按钮 提交给处理程序add_item 然后在购物车里加上一本书 这时候跳转执行quant_item显示购物车里所买的商品 同时有修改数量和取消一种商品购买的按钮 用户根本无法刷新add_item这个程序是不是一个解决的思路呢 这个的确是个思路,我也想过,在查看购物车的程序中有三个按钮,删除、更改数量、确认购买。按钮太多了。用户有的不知所措。现在说一下我的思路:用户点击购物车,把一本书放入购物车中,数量默认是1,这时用户可以更改数量,也可以点击查看购物车。如果用户点机了查看购物车,从查看购物车程序点后退专到add_items.php这时我提到的那个函数就开始工作了。他把数量自动加了1 ,应为我的类中是这么设计的,如果这本书已经存在购物车了,用户又点击,那么它的数量增加1。对于这个问题,我的解决办法是这样的:用户添加到购物车一件物品,用session记录改物品的id号,如果物品的id号没有session记录,在加到购物车中。然后在记录改物品的id。当用户返回首页购物时,把刚才记录的id删除。也就是说在购买新物品的同时删除上次用session记录的id. 我觉得可以像china-pub.com一样,用户每一次点选了什么,都出现购物车的清单数量可以大点的字显示,让用户清清楚楚.明明白白就可以了刷新的问题,多显示购物车,用户会发现的最好是这样,比如说用户选了A物品,购物车中有一行然后刷新了,或者他再次选择,又出现一行这样,她就很容易发现了买东西人们都会小心的,是把, 楼主的思路有点问题。“当用户返回首页购物时,把刚才记录的id删除。也就是说在购买新物品的同时删除上次用session记录的id”这两个id不是同一个吗?_SESSION cart id1 => num id2 => num id3 => num id4 => num ... userid =>第一次进入创建session调整商品可在确认购买时进行 这两个id不是同一个id,我的物品的id都是唯一的。 既然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;}}?> [求修改]我也不知道这个是不是C语言的 哪位帮我看看这段php为何无法运行 mysql读数据库的问题! 正则表达式 在PHP中,如何选定某一行,并把选定行对应的值传递给方本框中,如图: 一个困绕我多天的函数?希望在CSDN上得到解决! php连接mysql问题 php/mysql 一个疑惑??? 关于HRADER() php pear安装 纯文本的格式显示 请问错在哪里???
你说的“当用户后到首页时,把刚注册的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;
}}
?>