前言
购物车这一部分的内容非常重要。涉及了很多知识点。
涉及到的知识点
- cookie
- session
- php字符串处理
- laravel中间件
这里我们只大致说一下,具体代码分析请自行去github下载
下载链接https://github.com/songzh96/Provence.git
知识点分析
Cookie是什么?
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
Laravel中的cookie
Laravel会加密所有已创建的cookie信息,并附加上授权码,当客户端擅自修改cookie信息时,该cookie将被废弃,从而保证安全性。
我们这里主要使用的cookie是存放购物车商品列表信息,
通过Request实例上的cookie方法获取cookie数据,
该方法可以接收一个参数名返回对应的cookie值,如果不传入参数,默认返回所有cookie值
这里我们就是通过这个方法来获取购物车中的信息。
Session是什么?
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
在 Laravel 中主要有两种方式处理 Session 数据:全局的辅助函数 session,或者通过 Request 实例。
这里我们使用的是通过Request实例。
PHP字符串处理
explode() 函数把字符串打散为数组。
资料链接:http://www.w3school.com.cn/php/func_string_explode.aspstrpos() 函数查找字符串在另一字符串中第一次出现的位置。
资料链接:http://www.w3school.com.cn/php/func_string_strpos.aspsubstr() 函数返回字符串的一部分。
资料链接:http://www.w3school.com.cn/php/func_string_substr.aspimplode() 函数返回由数组元素组合成的字符串。
资料链接:http://www.w3school.com.cn/php/func_string_implode.asp
Laravel中间件
简介
HTTP 中间件为过滤进入应用的 HTTP 请求提供了一套便利的机制。例如,Laravel内置了一个中间件来验证用户是否经过认证,如果用户没有经过认证,中间件会将用户重定向到登录页面,否则如果用户经过认证,中间件就会允许请求继续往前进入下一步操作。
当然,除了认证之外,中间件还可以被用来处理更多其它任务。比如:CORS 中间件可以用于为离开站点的响应添加合适的头(跨域);日志中间件可以记录所有进入站点的请求。
本案例的使用
-
创建中间件
在Http\MiddleWare\下创建php文件
-
注册中间件
在Http\Kernel.php下进行修改
-
注册中间件路由
在Http\routes.php下进行修改
功能介绍
购物车中商品的添加和删除
同步购物车
功能分析
购物车中商品的添加和删除
首先在前端注册个点击事件(添加),当用户点击后就通过ajax传值到后端,
后端首先要判断用户是否已登录,
如果登录就和数据库同步处理,
若未登录将产品先从cookie中取数据然后进行字符串处理,
如果是cookie中已有的产品那么就+1,
如果不是就需要将新产品存放到数组中,最后再将cookie更新一下
删除逻辑大致差不多。
同步购物车
- 首先需要在购物车的数据表中查找用户,然后就能找到用户的购物车中所对应的所有商品。
找到之后判断本地购物车中的商品是否和数据库中的一致
若不一致则需要将本地新添加的商品存储到数据表中
最后为每个对象附加产品对象便于显示