phpsession实现购物车原理(购物车用session怎么实现的)
本文目录
- 购物车用session怎么实现的
- 请问一下php做购物车为什么要用SESSION来实现呢
- 购物车如何实现用什么技术
- 用php,session怎么做购物车求详细解答
- 网站购物车是怎么个原理对数据库表配哪些字段想不明白请假大侠们
- php 最新的购物车session类
购物车用session怎么实现的
public void doGet(HttpServletRequest request, HttpServletResp***e resp***e)
throws ServletException, IOException {
resp***e.setContentType("text/html;charset=utf-8");
PrintWriter out = resp***e.getWriter();
// 获得session
request.getSession(); // 创建了一个session
// 获得所有商品
Map《String, Book》 all = DB.getAll();
out.write("本站提供如下商品《br》");
for(Entry《String,Book》 e : all.entrySet()) {
Book book = e.getValue();
// 超链接要url重写
// url重写做了两件事情,第一,获得session的id,第二,将id加到地址后面
String url = "/javaweb07/servlet/BuyServlet?id="+book.getId();
String newUrl = resp***e.encodeURL(url);
out.write(book.getName() + "《a href=’"+newUrl+"’ target=’_blank’》购买《/a》《br》");
}
}
BuyServlet.java
public void doGet(HttpServletRequest request, HttpServletResp***e resp***e)
throws ServletException, IOException {
// 获得id
String id = request.getParameter("id");
// 找出书
Book book = DB.find(id);
// 获得购物车
HttpSession session = request.getSession();
List cart = (List) session.getAttribute("cart");
if(cart==null) {
// 刚进超市,分配购物车
cart = new ArrayList();
}
// 加入购物车
cart.add(book);
// 将购物车找个地方存起来,方便下次购买
session.setAttribute("cart", cart);
// 第一次创建session的时候需要发Cookie,将sessionid带给浏览器
// 获得sessionid
String sessionid = session.getId();
// 发送cookie,Cookie的key是区分大小写
Cookie cookie = new Cookie("JSESSIONID", sessionid);
// 设置有效时间
cookie.setMaxAge(60*60*5);
resp***e.addCookie(cookie);
// 请求重定向到购物车页面
String url = "/javaweb07/servlet/ListCartServlet";
// url重写
String newUrl = resp***e.encodeRedirectURL(url);
resp***e.sendRedirect(newUrl);
}
ListCarServlet
public void doGet(HttpServletRequest request, HttpServletResp***e resp***e)
throws ServletException, IOException {
resp***e.setContentType("text/html;charset=utf-8");
PrintWriter out = resp***e.getWriter();
// 获取购物车
// getSession方**拿着用户的jsessionid去内存找session 找不到才创建
HttpSession session = request.getSession();
List《Book》 cart = (List《Book》) session.getAttribute("cart");
if(cart==null) {
out.write("对不起!您还没有购买商品!!!");
return ;
}
//遍历购物车中的商品显示
out.write("您购买了如下商品:《br》");
for(Book book : cart) {
out.write(book.getName() + "," + book.getPrice() + "《br》");
}
// 让session立即失效
//session.invalidate();
out.write("《input type=’button’ value=’进入结算中心’ /》");
}
请问一下php做购物车为什么要用SESSION来实现呢
就跟Cookie一样,不同访客存储的数据不一样,这些数据如果存放到数据库中,不太方便,可以存放到radis或者SESSION中,直接存储到cookie中的话,会产生客户端可以篡改的问题,所以折中的话使用session算是最常规的方法。
购物车如何实现用什么技术
1. cookie
cookie是由服务器产生,存储在客户端的一段信息。它定义了一种Web服务器在客户端存储和返回信息的机制,cookie文件它包含域、路径、生存期、和由服务器设置的变量值等内容。当用户以后访问同一个Web服务器时,浏览器会把cookie原样发送给服务器。通过让服务器读取原先保存到客户端的信息,网站能够为浏览者提供一系列的方便,例如在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告等等。利用cookie的特性,大大扩展了WEB应用程序的功能,不仅可以建立服务器与客户机的联系,因为cookie可以由服务器定制,因此还可以将购物信息生成cookie值存放在客户端,从而实现购物车的功能。用基于cookie的方式实现服务器与浏览器之间的会话或购物车,有以下特点:
n cookie存储在客户端,且占用很少的资源,浏览器允许存放300个cookie,每个cookie的大小为4KB,足以满足购物车的要求,同时也减轻了服务器的负荷;
n cookie为浏览器所内置,使用方便。即使用户不小心关闭了浏览器窗口,只要在cookie定义的有效期内,购物车中的信息也不会丢失;
n cookie不是可执行文件,所以不会以任何方式执行,因此也不会带来病毒或攻击用户的系统;
n 基于cookie的购物车要求用户浏览器必须支持并设置为启用cookie,否则购物车则失效;
n 存在着关于cookie侵犯访问者隐私权的争论,因此有些用户会禁止本机的cookie功能。
2. session
session是实现购物车的另一种方法。session提供了可以保存和跟踪用户的状态信息的功能,使当前用户在session中定义的变量和对象能在页面之间共享,但是不能为应用中其他用户所访问,它与cookie最重大的区别是,session将用户在会话期间的私有信息存储在服务器端,提高了安全性。在服务器生成session后,客户端会生成一个sessionid识别号保存在客户端,以保持和服务器的同步。这个sessionid是只读的,如果客户端禁止cookie功能,session会通过在URL中附加参数,或隐含在表单中提交等其他方式在页面间传送。因此利用session实施对用户的管理则更为安全、有效。
同样,利用session也能实现购物车,这种方式的特点是:
n session用新的机制保持与客户端的同步,不依赖于客户端设置;
n 与cookie相比,session是存储在服务器端的信息,因此显得更为安全,因此可将身份标示,购物等信息存储在session中;
n session会占用服务器资源,加大服务器端的负载,尤其当并发用户很多时,会生成大量的session,影响服务器的性能;
n 因为session存储的信息更敏感,而且是以文件形式保存在服务器中,因此仍然存在着安全隐患。
3. 结合数据库的方式
这也是目前较普遍的模式,在这种方式中,数据库承担着存储购物信息的作用,session或cookie则用来跟踪用户。这种方式具有以下特点:
n 数据库与cookie分别负责记录数据和维持会话,能发挥各自的优势,使安全性和服务器性能都得到了提高;
n 每一个购物的行为,都要直接建立与数据库的连接,直至对表的操作完成后,连接才释放。当并发用户很多时,会影响数据库的性能,因此,这对数据库的性能提出了更高的要求;
n 使cookie维持会话有赖客户端的支持。
用php,session怎么做购物车求详细解答
我有个session的例子你看看吧!!!你把session换成cookie就可以了!!! //增加购物车物品 if($name==$_SESSION) { $_
网站购物车是怎么个原理对数据库表配哪些字段想不明白请假大侠们
第一:做购物车,一般来说是不存入数据库这样数据量比较大并且查询效率慢,所以一般购物车都用Session,或Cookie来实现,建一个购物车实体类,大概有这些字段,商品ID,用户ID,数量...等这可以根据自己需要来设置,然后比如购买一件商品添加到购物车就创建一个hashtable来保存购物车里的信息,然后把hashtable保存到Session或Cookie,大致就这样。
第二:订单,你说的那个订单一般都有一个订单表的。首先要弄清楚流程,肯定是用户先将产品加入购物车,然后再提交订单的。为什么会订单下了以后还关购物车的事呢?购物车只是临时保存用户购买产品的地方。就像超市里去卖东西首先推一个车,然后去选购你要的产品,最后付款。对应这车只是你保存东西的一个工具,当你购买完毕后就不会和他有什么联系了。如果你后面需要退货你也只管那张单据(对应产品订单)而不会和你购物车车上联系。
不知道我这样讲你是否明白!
php 最新的购物车session类
我这有两个php代码一个是session写的,一个是cooking写的,这两个方法各有优劣,还没写成类,你可以看一下,希望对你有所帮助:
一。session类
《?php
if(isset($_SESSION))//判断购物车是否存在,如果存在把session付给它,如果不存在创建一个购物车;
{
$cart=$_SESSION;
}
else
{
$cart=array();
}
$id=$_GET;
$price=$_GET;
$name=$_GET;
$act=$_GET;
switch($act)
{ case(buy):
{
if(isset($cart))
{
$cart+=1;
}
else
{ $cart=$price;
$cart=$name;
$cart=1;
}
break;
}
case (del):
{
$id=$_GET;
unset($cart);
break;
}
case(delall):
{
unset($cart);
break;
}
case(change):
{
$id=$_POST; //数组
$textnum=$_POST; //数组
for($i=0;$i《count($id);$i++)
{
$cart;
}
break;
}
}
$_SESSION=$cart;
if($cart=="")
{
?》
《input type="button" value="继续购物" onClick="window.location.href=’9_17.php’"》
《?php
die(购物车已清空);
}
?》
《form action="?act=change" method="post"》
《table width="600" border="1" cellspacing="0" cellpadding="0"》
《tr》
《td》编号《/td》
《td》名称《/td》
《td》价格《/td》
《td》数量《/td》
《td》小计《/td》
《td》操作《/td》
《/tr》
《?php
$sum=0;
foreach($cart as $key=》$goods)
{
?》
《tr》
《td》《?php echo $key?》《/td》
《td》《?php echo $goods ?》《/td》
《td》《?php echo $goods ?》《/td》
《td》
《input type="text" id="textnum?》"》
《input type="hidden" name="hidID" id="hidID" value="《?php echo $key ?》"》《/td》
《td》《?php echo $goods ?》《/td》
《td》《a href="?id=《?php echo $key ?》&act=del"》删除《/a》《/td》
《/tr》
《?php
$sum+=$goods;
}
?》
《tr》
《td colspan="6"》《input type="button" name="button" id="button" value="继续购物" onClick="window.location.href=’9_17.php’"》
《input type="button" name="button2" id="button2" value="删除全部" onClick="window.location.href=’?act=delall’"》
《input type="submit" name="button3" id="button3" value="更改数量"》
《input type="button" name="button4" id="button4" value="提交订单"》《/td》
《/tr》
《/table》
总计:《?php echo $sum; ?》
《/form》
二。cookie写法
《?php
session_start();
if(isset($_COOKIE))
{
$strCart=$_COOKIE;
$cart= unserialize(gzuncompress(base64_decode($strCart)));//先把字符串解码,再反序列化
}
else
{
$cart=array();
}
$id=$_GET;
$price=$_GET;
$name=$_GET;
$act=$_GET;
switch($act)
{
case ’buy’:
{
if(isset($cart))
{
$cart+=1;
}
else
{
$cart=$name;
$cart=$price;
$cart=1;
}
break;
}
case ’delete’:
{
$id=$_GET;
unset($cart);
break;
}
case ’clear’:
{
unset($cart);
break;
}
case ’update’:
{
$num=$_POST;
$id=$_POST;
for($i=0;$i《count($id);$i++)
{
$cart;
}
break;
}
}
$strCart=base64_encode(gzcompress(serialize($cart)));//先把对象序列化,在进行编码
//echo $strCart;
setcookie(’cart’,$strCart,time()+3600*24*7);
$sum=0;
if($cart==’’)
{
?》
《title》cookie实现购物车的功能《/title》
《input type=’button’ value=’继续购物’ onClick="window.location.href=’9_17.php’"》
《?php
die(’购物车为空!’);
}
?》
《form action="?act=update" method="post"》
《table width="600" border="1" cellspacing="0" cellpadding="0"》
《tr》
《td》产品编号《/td》
《td》产品名称《/td》
《td》产品价格《/td》
《td》购买数量《/td》
《td》小计《/td》
《td》操作《/td》
《/tr》
《?php foreach($cart as $key=》$goods){
?》
《tr》
《td》《?php echo $key ?》《/td》
《td》《?php echo $goods ?》《/td》
《td》《?php echo $goods?》《/td》
《td》《input type="text" value="《?php echo $goods ?》" id="texnum" name="texnum"》
《input name="hidID" type="hidden" id="hidID" value="《?php echo $key ?》"》《/td》
《td》《?php echo $goods ?》《/td》
《td》《a href="?act=delete&id=《?php echo $key ?》"》删除《/a》《/td》
《/tr》
《?php
$sum+=$goods; }?》
《tr》
《td colspan="6"》
《input type="button" name="button" id="button" value="继续购物" onClick="window.location.href=’9_17.php’"》
《input type="button" name="button3" id="button3" value="清空购物车" onClick="window.location.href=’?act=clear’"》
《input type="submit" name="button2" id="button2" value="更改数量"》
《input type="button" name="button4" id="button4" value="去付款"》《/td》
《/tr》
《/table》
《h3》总计:《?php echo $sum ?》《/h3》
《/form》
更多文章:
timeout的翻译(gatewaytimeout什么意思)
2026年4月12日 22:20
linux系统编程实战刷题(想在LINUX下学习C语言,该如何开始)
2026年4月12日 22:00
库里单突布里奇斯(布里奇斯和库里分别当选首周东西部最佳球员,他们在首周的战绩如何)
2026年4月12日 21:40
c语言struct头文件(c语言中,struct怎么用是什么意思)
2026年4月12日 21:20
phpsession实现购物车原理(购物车用session怎么实现的)
2026年4月12日 21:00
适合30岁短期培训班(30岁没学历从零开始学什么技术有前途)
2026年4月12日 20:00




