通常來講咱們實現某一個產品要麼是徹底新的開發(0-1的過程),咱們此次是使用TP框架進行新的開發(0-1的過程),總體有一個歸納。(可是須要注意的是,畢竟才8天左右的時間,有部分的功能可能就不是很完整)。在開發以前,咱們須要使用必定的電商的產品來進行基本概念的理清。那麼咱們使用一下一個開源的產品(ECShop)。php
什麼是ECShop?css
答:是一個b2c(企業對用戶)的開源商品(最早是爲摩托羅拉商品作的),以前是上海商派公司開發的(高春輝:高老)。如今這個產品已經被shopNC收購。這個產品目前基本再也不作版本更新。(小的維護)(雪藏),須要注意的是該產品目前兼容性有點小問題(不能在高版本的PHP上面運行。)html
集成開發環境:PHPstudymysql
幾個概念?jquery
b2c:企業對客戶(地方性的電商網站)laravel
c2c:客戶對客戶 淘寶(我的對我的)git
b2b:企業對企業 天貓(商家、租金、保證金)、京東(自營、第三方入駐)程序員
o2o::線上(商鋪)和線下(倉庫爲主) 京東、惟品會、蘇寧、國美github
........web
1. 創建虛擬主機,配置host文件
3. 瀏覽器訪問安裝(域名+install)
4. 安裝過程當中數據庫配置和管理員帳號配置
5. 前臺效果
須要注意的是,該產品存在一個通用的使用步驟,掌握該步驟以後,不管是用該產品作什麼類型的電商都是能夠快速的上手。(手機、電腦、農產品、書本.....)
一、 創建一個商品類型
二、 爲商品類型指定屬性
三、 創建分類
四、 添加商品
2. 爲商品類型添加屬性
3. 產地屬性內容填寫
須要注意的是,屬性是能夠分類的,通常爲惟一和單選屬性。同時屬性在填寫的時候,也是可使用不一樣的方式進行屬性值的填寫,通常爲手工填寫和列表選擇。
4. 甜度屬性內容填寫
5.是否綠色屬性內容填寫
屬性填寫
8. 前臺商品展現效果
總結:
問題:引入商品類型有啥好處?
答:主要是爲了後期的商城的擴充方便。(一個ECShop能夠實現不一樣的商城)1. 電腦 2. 蜂蜜 3. 海鮮....
對於二次開發,有一個大體的認識,知道如何去作二次開發(體現是一個野的路子)沿着別人的邏輯去找(體現程序員的思惟)
功能需求:
1. 關閉註冊時候沒必要要的項目(後臺去大體查看)
後臺關閉用戶註冊時候的沒必要要的信息
2. 用戶進行註冊
3. 在註冊完成後,但願可使用郵箱進行登陸
咱們須要查找$user在哪裏進行實例化,在當前文件搜索沒有發現,則只可能在當前文件的頂部開始在某個引入的文件裏面進行實例化操做。
經過在init.php文件進行搜索,沒有發現init_users()函數,那麼只能從頂部開始在某個文件進行引入的
經過函數裏面類文件的引入,咱們定義到$user對象的類文件在以下位置,可是在當前文件沒有login方法,則在該類的父類裏面確定存在login方法,那麼查看該類的父類,而後進行處理
父類文件'includes/modules/integrates/integrate.php'
注意:在lib_common.php文件裏面存在大量的公共函數,例如is_email()函數
如何追蹤代碼的執行的邏輯?二次開發不要改別人代碼,只能加。
開發環境:
代碼管理:SVN本地(公司如今使用的是SVN內部的代碼管理、git開源產品的管理 github、laravel ---》composer進行管理)(國內oschina上面有一個叫碼雲的產品,中國版的GitHub)
數據庫管理工具:少使用命令行、通常使用圖形化的界面(phpmyadmin web版的管理工具不少、 navicat for mysql 很不錯的 sql小海豚 front)儘可能作到每一個工具都有使用過,可是必定要有擅長的工具。
PHP集成環境:PHPstudy(wamp xamp 如今公司使用比較多的是 vagrant 進行環境搭建,能夠保證開發環境嚴格的一種,引入一個叫作boxes的概念)PHP版本是5.4版本(PHP7瞭解: 1. PHP7裏面參數是可使用基本數據類型進行約束 function getUserById(int $id) :array{})
開發工具:phpstorm(webstorm)稱得上IDE(laravel) 、 netbeans、 zendstdio 、文本編輯器:sublime Text3版本(開發)、atom(GitHub開源產品)、vscode(微軟)
若是使用SVN進行管理,必須是空目錄
檢出地址:http://192.168.84.28:8080/svn/local.tp.com/
用戶名:php25
密碼:php25
去除沒必要要的目錄
通常後臺的首頁都是一個品字形的框架集(頭部、左側、右側)
模板:如今不少使用 h-ui admin框架 layUi
視圖文件
4. 效果,雖然說如今框架集不建議使用(w3c不建議使用,可是在後臺仍是繼續使用)
如今咱們先實現後臺的用戶的管理,而後進行登陸操做。須要注意,後面咱們會學習rbac作用戶的權限管理,到時候會有角色的概念。(大體:1. 有權限(控制器下的一個方法) 2. 創建角色(爲角色分配權限) 3. 創建後臺的用戶(爲用戶分配角色))。先把用戶的模塊先完成,在實現rbac模塊。
完成一個後臺的用戶管理,要先進行表的設計。
id 主鍵 smallint unsigned auto_increment primary key comment '主鍵ID'
username varchar(30) not null comment '用戶名'
password char(32) not null comment '密碼'
salt varchar(30) not null comment '鹽'
email varchar(30) not null comment '用戶郵箱'
add_time int unsigned comment '時間戳信息,下去查一個時間戳的2038問題'
login_ip int unsgined comment '對於點分式的IP字段,通常咱們在保存的時候都是先把IP轉換爲對應的整數進行保存,ip2long long2ip 好處:1. 查詢快 2. 節省空間'
login_time int unsgined comment '登陸時間戳'
mark_up text comment '備註信息'
role_id tinyint not null default 0 comment '0表明尚未分配角色'
表結構
初始化操做
INSERT INTO `sh_user` VALUES ('1', 'caoyang', '26e1cd35f63895eee179cd5cb37af999', '597ee404d9ef3', 'gogery@163.com', '0', '0', '0', '備註信息', '1');
後臺用戶初始化
注意:通常來講後臺用戶表設計完成後,都會初始化一條超級管理員的帳號(天生要存在,而且該用戶也不能被刪除,也不能被修改)
insert into sh_user values('..............');
整數數據範圍
答:mediumint(無符號:0-1千六百萬)通常咱們使用的比較多的是mediumint
int(無符號:0-42億)
對於用戶名或者是商品名稱這類字段是否須要家裏索引?
答:具體的業務具體看。
> select * from TableName where username like "%yang%";(全表掃描)
密碼強度的處理
答:須要注意,因爲單純的md5容易被暴力破解(字典),通常咱們都使用雙重md5處理(而後也能夠叫作加鹽)。規則:md5( md5('用戶提交的密碼') + 鹽(隨機字符串 uniqid()) );
完成一個用戶的curd模塊須要使用以下幾個文件:
效果
效果
1.在Admin模塊的UserController控制器文件增長一個edt方法,完成編輯操做
更新入庫 save返回值是受影響的行數,有可能爲0,
因此須要這樣判斷if( $userModel->save() !== false ){}
2.增長一個edt.html視圖頁面
效果
3.在Admin模塊增長一個UserModel.class.php模型文件,主要負責數據的校驗,以及數據的附加處理(用戶編輯的時候能夠密碼留空)
更新鉤子函數
1.在Admin模塊的UserController控制器文件增長一個del方法
jquery的做者之一進行開發維護的。
1. 先將插件文件複製到靜態資源的目錄
3. 在add.html頁面爲要驗證的表單定義一個id和驗證提示的樣式信息,而後使用js代碼調用
代碼調用