1,速度不会很慢,如果该网上销售系统100人同时在线的话,对数据库的并发访问只有10个左右,完全可以满足要求。
2,当用户第一次使用购物车时候,建立session,将其保存在数据库中,以后的操作均基于该session。
如果不用session,恐怕只能用cookie了,否则诸如“用机器名+ip”这样的方式都不够安全,且很难实现
2,当用户第一次使用购物车时候,建立session,将其保存在数据库中,以后的操作均基于该session。
如果不用session,恐怕只能用cookie了,否则诸如“用机器名+ip”这样的方式都不够安全,且很难实现
其实你根本不用在意SESSION什么,说白了你要操作的仅仅是一个数组,只不过这个数组保存是使用了SESSION
<?
//传入值id(自动编号),name_en(中文名),pid(产品编号)
// 此文件中需要的变量
// basket 产品种数
// b_id 自动编号
// b_name 名称
// b_pid 产品编号
// b_num 数量require("../php/class.FastTemplate.php3");
$tpl=new FastTemplate(".");
$tpl->define(array(cars=>"basket.html",nocars=>"nobasket.html"));session_start();
session_register("null");
$null=false;switch($op) {
case "clear": //清除所有产品
$basket=0;
unset($basket);//产品种数
unset($b_id); //记录每种产品的自动编号
unset($b_name);//记录每种产品的英文名称
unset($b_pid); //记录每种产品的编号
unset($b_num); //记录每种产品的数量
break; case "delete": //删除一种产品
$b_num[$id]=0;
$basket--;
break; case "update": //更新数量
for($i=0;$i<$basket;$i++)
{
if(intval($bid[$i])==0) continue;
$b_num[$i]=$bid[$i];
}
break; case "pay":
header("location:index.php?op=pay");
break; default:
$op="register";
break;
}if($op=="register")
{
if(session_is_registered("basket")) //假若蓝中已有产品
{
for($i=0;$i<$basket;$i++)
if($b_id[$i]==$id) //假若蓝中当前产品自动编号等于此产品自动编号,则数量加1
{
$b_num[$i]++;
break;
} if($i>=$basket) //增加一种产品
{
$b_id[$i]=$id;
$b_name[$i]=$name_en;
$b_num[$i]=1;
$b_pid[$i]=$pid;
$basket++;
}
}
else //假若蓝中还没有产品
{
// 在session中注册新的篮子
session_register("basket");
session_register("b_id");
session_register("b_name");
session_register("b_num");
session_register("b_pid");
$basket=1; //产品种数设为1
$b_id[0]=$id;
$b_name[0]=$name_en;
$b_num[0]=1;
$b_pid[0]=$pid;
}
}// 如果篮子中有物品时用于显示它们。
if ($basket>0)
{
for($i=0;$i<$basket;$i++)
{
if ($b_num[$i]> 0)
{
$null=true;
$id=$b_id[$i];
$num=$b_num[$i];
$name=$b_name[$i];
$pid=$b_pid[$i];
$body.="
<TR>
<TD> $pid</TD>
<TD>$name</TD>
<TD><input type=text name=bid[$i] value=$num></TD>
<TD>
<div align=center><a href=\"javascript:if (confirm('真的不买 [".$name."] 了吗?'))window.location='basket.php?op=delete&id=$i'\"><B><font color=red>删除</font></B></a></div>
</TD>
</TR>";
}
}
}if($null==false)
{
$tpl->parse(OUTPUT,nocars);
}
else
{
$tpl->assign(BODY,$body);
$tpl->parse(OUTPUT,cars);
}
$tpl->FastPrint(OUTPUT);
?>
2、只有在成交时才需要把相关资料存入数据库
2、只有在成交时才需要把相关资料存入数据库
2、只有在成交时才需要把相关资料存入数据库