昨天在TP里面,对于若是memcache没有启动的状况下,不会进行报错。php
1.若是memcache没有启动进行connet的时候报的是一个notice和warning级别的错误。这种提示信息在TP里面是不会自动报出来(TP里面使用本身定义的错误处理进行处理的)html
效果: 在TP里面开启show_page_trace能够查看mysql
在没哟使用TP以前,若是链接不成功,则提示什么信息?ajax
若是咱们要捕获这个提示信息,则该如何处理?redis
答:用用户本身编写错误处理函数进行处理。(意思就是咱们本身写一个处理函数,来捕获notice级别的错误)sql
http://blog.csdn.net/e421083458/article/details/8157154数据库
效果浏览器
TP 内部的错误处理机制服务器
最终处理代码微信
QQ互联这种技术通常也叫做第三方登陆。
好处:减小用户的记忆成本(一个帐号能够通用的登陆不少系统)。
弊端:用户是受限于接口提供方(腾讯的限制、百度接口)因此通常的第三方接口在必定时间以后,都是把用户想办法拉回来(用户本身的会员系统,作个活动,送东西。例如 招商银行,最早是 微信公招号可使用,可是有些一些功能,必须去APP可使用。)
网站:https://connect.qq.com/manage.html
1. 建立一个应用
2. 信息填写
回调地址传递
注意:若是审核经过,则腾讯会提供用户一个AK和一个SK。
须要注意:若是申请没有经过,则只能使用当前登陆的QQ号做为测试帐号使用。
APP ID:101417330
APP Key:b41ebc1f9f00675309b28cbbc7054397
网站:http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD
a) 根据openid去会员表里面查看当前的openid是否存在和本身网站会员的绑定信息,若是存在,则直接将用户的信息保存在session里面,则表明登陆
b) 根据openid查不到用户的信息,则没有绑定,提示用户绑定以后,只要绑定一次,之后都不用在绑定,之后可使用QQ能够进行登陆(接触全部的业务都是要用户本身的绑定)
1. 将QQ开发包复制到网站根目录的qq文件夹下
2. 到config中去配置qq互联的id和key
3. 将项目代码上传到服务器上(线上服务器)(域名: http://shop.sinsea.cn)
定义点击事件的回调函数
效果
6. 在Home模块的MemberController.class.php控制器文件定义一个bingding方法【注册过的会员】
效果
绑定界面
1. 腾讯在用户成功登陆后的回跳信息
2. 在QQ用户成功登陆后的回跳地址
执行$rs = array();
foreach ($radioData as $k=>$v){
$rs[$v['attr_id']][] = $v;
}
效果:
效果
单选信息获取的原生sql操做:
mysql> select a.*,b.attr_name from sh_goods_attr a left join sh_attribute b on a.attr_id = b.attr_id where a.goods_id = 15 and b.attr_type = 0;
获取商品id为15的单选信息
考虑以下几个问题:
答:注意:
实现购物车的时候应该是有区分对待:
参考一下京东(登陆和没登陆均可以加入购物车)、淘宝(必须登陆后才能够加入购物车)。
比较:对于淘宝来讲,是登陆后才能够加入购物车(好处: 只要加入购物车的数据到时候能够在什么时候何地均可以查看 弊端: 用户体验很差)对于京东(好处: 用户体验好 弊端: 若是更换浏览器,则购物车的数据就没有了)
答:
通常若是是登陆了, 则须要保存 商品id、商品属性id、商品数量、用户id
若是是没有登陆,则须要保存 商品id、商品属性id、商品数量
问题:对于商品的价格是千万不能保存(由于价格是有可能会变,价格须要去数据库实时的获取)
答:
数据表:
id |
goods_id |
goods_attr_id |
goods_number |
user_id |
1 |
15 |
18,23 |
123 |
2 |
3 |
16 |
45 |
45 |
2 |
cookie:因为咱们要保存的信息偏多(不是单独的字符串)
数据结构:
array(
'goods_id-goods_attr_id' => goods_number,
'goods_id-goods_attr_id' => goods_number
)
表明用户购买了两类商品
array(
'15-18,23' => 123,
'16-45' => 45
)
存储:
setcookie('cart', '序列化的字符串', time, '/');
效果
因为单选属性是存在不肯定性的(有多是多个,有可能没有,取决于后台添加的商品类型下的属性)unset()
1. 在Home模块的CartController.class.php控制器文件增长一个cartList方法,展现购物车数据
2. 增长一个cartList.html视图页面,展现购物车数据
效果
单选属性获取原生SQL:
mysql> select group_concat( concat(b.attr_name,':',a.goods_attr_values) separator '<br/>' ) as ga from sh_goods_attr a left join sh_attribute b on a.attr_id = b.attr_id where a.id in (17,21);
在用户成功登陆后,须要将没有登陆前的购物车的信息转存到数据库的购物车表里面
在用户点击结算中心的时候,须要判断用户是否登陆。由于结算中心是必须登陆以后才能够访问,而且,若是用户没有登陆,在跳转到登陆页面进行进行成功登陆后,还须要跳到结算中心。
1. 在cartList.html页面为定义结算提交地址
答:设计订单表来保存这次订单信息。
答:集成支付宝
完成订单功能通常须要设计两张表
第一张表:订单信息表 保存这次的订单的详情(订单id 下单人、下单收货地址、手机号码、邮编、总价、....)
第二张表:订单商品表 保存这次订单的商品的详情信息(订单id 商品ID、商品价格、商品的库存....)
id 主键
order_id 订单号 注意: 通常订单号是这样生成,date('YmdHis'). uniqid()
user_id 表明是哪一个用户下的订单
shr 收货人姓名(人看)
address 收货地址
phone 手机号码
zcode 邮编
total_price 总价
add_time 下单时间
pay_status 支付状态,默认是0表明没有支付,1表明已经支付(用户使用支付宝付款,咱们要修改其状态)
delivery_status 表明是投递状态 是否返回 默认是0表明没有发货,1表明已经发货,2表明已经收货
trade_number 表明是使用支付宝付款后,支付宝那边传递过来的一个交易订单号(支付宝那边进行一次交易),到时候若是用户须要退款,则可使用该订单号进行退款。
id 主键id
order_id 所属订单
goods_id 商品的主键
goods_attr_id 表明是商品属性值主键id
good_number 商品数量
goods_price 商品单价
.....
create table tableName like tableName 快速复制一个表结构
事件绑定
效果
效果
目前支付宝只支持企业(我的已经不能在使用了)之前存在一个叫作担保交易。如今统一都是即时到帐(买家买完东西,付款后,支付宝会立马把钱转给商家)
文档:https://cshall.alipay.com/enterprise/knowledgeDetail.htm?knowledgeId=201602148574
在支付宝提交营业许可证以后,在经过审核以后,会商家一个帐号和一个密钥。
2. 在Home模块的Model目录建立一个PayModel.class.php模型文件
4. 在Home模块里面的OrderController.class.php控制器文件的order2方法里面完成支付宝的集成
6. 在Home模块里面的OrderController.class.php控制器文件的定义order3和order4方法完成同步和异步的通知处理