昨天在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方法完成同步和異步的通知處理