当用户进行购物时他有可能是本商电的会员或游客(非会员);因此得出两种方案:

方案一:(会员)

  用户进行购物时他是我们本商店的会员(数据库中存在该用户的数据),当用户添加商品到购物车的时候我们可以分为两种方法;

  方法一,

    当用户购买商品添加到购物车时没有进行登陆,如果我们用session来保存用户的数据那么我们就要考虑到这种情况,一旦用户关闭浏览器那么之前所保存的数据就会丢失,因此采用cookie来保存数据。当用户点击结账时,对用户进行登陆验证,然后判断cookie是否存在购买商品的信息。如果存在,就将cookie中的数据保存到mysql中,然后清空cookie信息,最后结账成功。

  方法二

    用户添加商品到购物车的时候必须进行登陆验证,然后才能将购买的商品直接保存在数据库,但是你有没有想过用户添加到购物车的商品,他不一定购买,因此我们额外增加了维护成本,但好处是用户能在何时何地都可以看到自己的购物信息。记住方式做任何电商网站,都要从用户的角度考虑。

对比发现,第一种方法比较人性化,用户体验比较好,因此大多数主流电商网站都是采用第一种方法。

方案二:(非会员)

  就是说你购物的时候你有可能不是本网站的会员,但你又想购买商品,那么我们会给你提供一个特殊的帐号(游客)具体实现思路如下:当用户购买通过cookie保存,结账的时候用户又不想注册,我们通过获取他的手机号码和地址,然后后台自动生成一个普通用户,将数据保存在数据库中并清除cookie。

以上两种方案都是我们日常在购物网站上经常遇到的,因此我们写购物车代码的时候一定要有一个清晰的思路,不然用户体验方面会大打折扣。

php 购物车实现购物的原理的更多相关文章

  1. 原生JS 购物车及购物页面的cookie使用

    ////////////////////////////////////购物页面 <!DOCTYPE html><html lang="en"><he ...

  2. 京东购物车的 Java 架构实现及原理!

    今天来写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗? 2)用户登陆了用户名密码,添加商品,关闭 ...

  3. 京东购物车的Java架构实现及原理!

    今天来写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗? 2)用户登陆了用户名密码,添加商品,关闭 ...

  4. 京东Java架构师讲解购物车的原理及Java实现

    今天来写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码问:购物车商品还在吗? 2)用户登陆了用户名密码,添加商品,关闭浏 ...

  5. 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车

     阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...

  6. Android 购物车功能的实现

    首先,众所周知,ListView是Android最常用的控件,可以说是最简单的控件,也可以说是最复杂的控件. 作为一个Android初级开发者,可能会简单的ListView展示图文信息. 作为一个有一 ...

  7. 购物车【JavaWeb小项目、简单版】

    前言 为了巩固MVC的开发模式,下面就写一个购物车的小案例.. ①构建开发环境 导入需要用到的开发包 建立程序开发包 ②设计实体 书籍实体 public class Book { private St ...

  8. SSH框架实现仿淘宝购物demo

    还记得六月份实习的时候,曾经做过一个电商的项目,项目里面需要实现类似淘宝购物车的移动端的demo,随着项目的进行,再一次跟购物车碰面,但是今天呢,不是移动端的需求,如何使用SSH框架实现类似淘宝的购物 ...

  9. ATM+购物车商城

    模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 支持多账户登录 支持账户间转账 记录每月日常消费流水 提供还 ...

随机推荐

  1. 贪心问题:区间覆盖 POJ 1328 Rader Installation

    题目:http://poj.org/problem?id=1328 题意:给定海岛个数,雷达半径,输入各个海岛坐标,求能覆盖所有海岛的最少雷达数 题解: 1. 贪心的区间覆盖问题,尽量让每个雷达覆盖更 ...

  2. Java 避免精度丢失之BigDecimal 运算

    * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精确的浮点数运算,包括加减乘除和四舍五入 import java.math.BigDecimal; /** 计算工具类 */ pu ...

  3. awk例子

     ls |awk -F . '{print $1}'|awk -F '-[0-9]' '{print $1}' 

  4. 通过xshell/securecrt连接linux上传/下载文件

    通过ssh等客户端连接远程linux总会有上传下载的需求,这里分别用Ubuntu和centos展示安装lrzsz软件的命令,使用命令是一致的,这里简单写 1.安装: centos:(注:参数-y中的意 ...

  5. sql server 查询本年的每个月的数据

    一.以一行数据的形式,显示本年的12月的数据,本示例以2017年为例,根据CreateDate字段判断,计算总和,查询语句如下: end) as '1月', end) as '2月', end) as ...

  6. webpack详解

    webpack是现代前端开发中最火的模块打包工具,只需要通过简单的配置,便可以完成模块的加载和打包.那它是怎么做到通过对一些插件的配置,便可以轻松实现对代码的构建呢? webpack的配置 const ...

  7. Eureka简介

    Eureka是Spring Cloud Netfix 的一个子模块,也是核心模块之一,用于云端服务发现.一个基于RestFul的服务,用于定位服务,以实现云端中间层服务发现和中间层转移. 服务注册与发 ...

  8. C++中关于位域的概念

    原文来自于http://topic.csdn.net/t/20060801/11/4918904.html中的回复 位域 有些信息在存储时,并不需要占用一个完整的字节,   而只需占几个或一个二进制位 ...

  9. jdbc一次性采集mysql和oracle的海量数据,5000W+为例

    最近做的采集工具遇到采集一天数据(超过5000W行数据)的情况, 采集mysql的时候直接采用流式读取的方式可以一次全部都读取出来,速度的话取决于网络速度 stmt = conn.createStat ...

  10. 使用IDEA进行打包

    使用IDEA打jar包: 1.