亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

PHP+MySQL物流管理系統(tǒng)源碼解析:從數(shù)據(jù)庫(kù)設(shè)計(jì)到訂單全生命周期

PHP+MySQL物流管理系統(tǒng)源碼解析:從數(shù)據(jù)庫(kù)設(shè)計(jì)到訂單全生命周期 簡(jiǎn)介基于PHPMySQL構(gòu)建的物流管理系統(tǒng)源碼面向中小型物流企業(yè)、開(kāi)發(fā)者及畢業(yè)設(shè)計(jì)用戶。系統(tǒng)覆蓋車(chē)輛信息管理、人員與權(quán)限配置、開(kāi)單錄入查詢等核心模塊支持車(chē)牌號(hào)、車(chē)型、載重能力等車(chē)輛檔案維護(hù)以及按訂單號(hào)、客戶名、日期等條件檢索歷史物流單能在信息化場(chǎng)景下幫助企業(yè)合理調(diào)度車(chē)輛、追蹤訂單狀態(tài)、降低運(yùn)營(yíng)成本。整套資源共52個(gè)文件壓縮包僅258KB主體為20個(gè)PHP業(yè)務(wù)邏輯文件同時(shí)含有5組MySQL數(shù)據(jù)文件frm/myd/myi用于還原數(shù)據(jù)庫(kù)結(jié)構(gòu)另附j(luò)s/css提供前端交互與頁(yè)面樣式gif、swf資源用于界面展示readme.doc則說(shuō)明部署與使用方法目錄結(jié)構(gòu)清晰便于按模塊定位學(xué)習(xí)。已有270人瀏覽學(xué)習(xí)適合希望掌握PHPMySQL前后端聯(lián)通邏輯的初中級(jí)開(kāi)發(fā)者也可直接作為物流管理系統(tǒng)二次開(kāi)發(fā)或畢業(yè)設(shè)計(jì)的基礎(chǔ)骨架。源碼完全開(kāi)放可自由調(diào)整業(yè)務(wù)字段、查詢維度與操作權(quán)限具備良好的擴(kuò)展性和參考價(jià)值。1. 一套開(kāi)放的 PHPMYSQL 物流管理系統(tǒng)先跑通一條訂單的生命周期如果你所在的小團(tuán)隊(duì)還在用 Excel 表格加微信群管物流訂單第一次打開(kāi)這套完全開(kāi)放的 PHPMYSQL 物流管理系統(tǒng)源碼時(shí)你會(huì)覺(jué)得它樸素得甚至有點(diǎn)土——沒(méi)有花哨的框架沒(méi)有復(fù)雜的前端組件。但當(dāng)你把建單、派車(chē)、跟蹤、簽收這一整條鏈路在瀏覽器里走一遍會(huì)發(fā)現(xiàn)它的價(jià)值恰恰在業(yè)務(wù)閉環(huán)上它把物流管理里最核心的「一張訂單從哪來(lái)、到哪去、現(xiàn)在在誰(shuí)手上」講清楚了。對(duì)想快速落地一套內(nèi)部物流管理系統(tǒng)的團(tuán)隊(duì)或者想拿真實(shí)管理系統(tǒng)練手的學(xué)生開(kāi)發(fā)者來(lái)說(shuō)這份源碼能直接把從數(shù)據(jù)庫(kù)設(shè)計(jì)到 PHP 業(yè)務(wù)實(shí)現(xiàn)的過(guò)程攤開(kāi)看。適合直接部署也適合從里面抄走關(guān)鍵模塊改到自己的 php 管理系統(tǒng)里。2. 系統(tǒng)架構(gòu)與數(shù)據(jù)庫(kù)設(shè)計(jì)八張表如何支撐一條物流全鏈路一份完全開(kāi)放的管理系統(tǒng)源碼最值錢(qián)的部分往往不在頁(yè)面樣式而在數(shù)據(jù)庫(kù)表結(jié)構(gòu)和狀態(tài)流轉(zhuǎn)設(shè)計(jì)。我第一次拆這套源碼時(shí)沒(méi)有急著去看 PHP 文件而是先把 SQL 導(dǎo)入本地?cái)?shù)據(jù)庫(kù)用 Navicat 把表結(jié)構(gòu)整體過(guò)了一遍??赐曛笞畲蟮母惺苁沁@個(gè)系統(tǒng)的業(yè)務(wù)邊界非常清楚就是圍繞「路運(yùn)」在做文章不碰庫(kù)存、采購(gòu)這些供應(yīng)鏈上游所以整個(gè)模型干凈適合二次開(kāi)發(fā)。2.1 入口文件與請(qǐng)求路徑先分清業(yè)務(wù)腳本和公共引入這套源碼是典型的原生 PHP 項(xiàng)目形態(tài)沒(méi)有框架那套路由和容器概念。打開(kāi)壓縮包頂層目錄下直接掛著login.php、order_list.php這種按業(yè)務(wù)命名的腳本一個(gè)瀏覽器請(qǐng)求過(guò)來(lái)走的路徑非常直白Web 服務(wù)器把請(qǐng)求交給 PHP 解釋器PHP 執(zhí)行對(duì)應(yīng)腳本腳本在最頂部require公共的數(shù)據(jù)庫(kù)連接文件和函數(shù)庫(kù)然后拼裝 SQL、渲染 HTML、輸出頁(yè)面。好處是排錯(cuò)直接——地址欄的文件名就是業(yè)務(wù)模塊名定位問(wèn)題不需要翻路由表。完整的目錄結(jié)構(gòu)大致是這樣的logistics/ ├── index.php # 登錄后首頁(yè)主控臺(tái) ├── login.php # 管理員登錄入口 ├── logout.php # 退出登錄 ├── order_list.php # 訂單列表與查詢 ├── order_add.php # 新建訂單 ├── waybill_list.php # 運(yùn)單列表 ├── waybill_assign.php # 派車(chē)分配 ├── waybill_track.php # 運(yùn)單軌跡回放 ├── vehicle_list.php # 車(chē)輛管理 ├── driver_list.php # 司機(jī)管理 ├── customer_list.php # 客戶管理 ├── includes/ │ ├── db.php # 數(shù)據(jù)庫(kù)連接 │ ├── auth.php # 登錄鑒權(quán)公共文件 │ └── functions.php # 公共函數(shù) └── assets/ # CSS/JS 靜態(tài)資源這里有一個(gè)部署時(shí)必須注意的點(diǎn)includes/db.php本身沒(méi)有登錄校驗(yàn)如果整個(gè)目錄被直接暴露在 Web 根目錄下別人訪問(wèn)http://你的域名/includes/db.php就能看到數(shù)據(jù)庫(kù)連接配置。我一般會(huì)做兩個(gè)調(diào)整第一把includes/目錄移動(dòng)到 Web 根目錄之外連接文件里用__DIR__配合相對(duì)路徑引用第二如果實(shí)在不方便移動(dòng)就在 Apache 配置里加一條目錄拒絕規(guī)則把includes/的訪問(wèn)直接擋掉。DirectoryMatch ^/.*/includes/ Require all denied /DirectoryMatch這套源碼里還留了不少require_once鏈改代碼時(shí)怕的不是繞而是改了一個(gè)函數(shù)后忘了其他腳本也在調(diào)用。動(dòng)手前先改includes/functions.php然后全局搜索函數(shù)名會(huì)用到哪些地方這個(gè)習(xí)慣能幫你少踩至少一半的坑。2.2 核心數(shù)據(jù)表訂單、運(yùn)單、車(chē)輛、客戶之間的關(guān)聯(lián)關(guān)系整套系統(tǒng)的數(shù)據(jù)模型本質(zhì)上是「客戶下單 - 生成運(yùn)單 - 分配車(chē)輛與司機(jī) - 運(yùn)輸 - 簽收」這條主鏈路的映射。拆開(kāi)數(shù)據(jù)庫(kù)核心表我整理成了下面這張對(duì)應(yīng)關(guān)系表名業(yè)務(wù)作用關(guān)鍵字段主要關(guān)聯(lián)customers發(fā)貨方客戶主數(shù)據(jù)id, name, phone, address, level被 orders 引用orders訂單主表order_no, customer_id, sender_, receiver_, goods_*, status多對(duì)一關(guān)聯(lián) customerswaybills運(yùn)單表waybill_no, order_id, vehicle_id, driver_id, status多對(duì)一關(guān)聯(lián) orders, vehicles, driversvehicles車(chē)輛檔案id, plate_no, vehicle_type, max_weight, max_volume, status被 waybills 引用drivers司機(jī)檔案id, name, phone, license_no, vehicle_id與車(chē)輛綁定waybill_tracking運(yùn)單軌跡流水id, waybill_id, action, location, operator, remark, create_time多對(duì)一關(guān)聯(lián) waybillsadmin_users后臺(tái)賬號(hào)id, username, password, role, last_login_time獨(dú)立settlement_log結(jié)算對(duì)賬記錄id, order_id, amount, status, pay_time, remark一對(duì)一關(guān)聯(lián) ordersorders 表里的sender_*和receiver_*字段是冗余設(shè)計(jì)的典型它沒(méi)有單獨(dú)建發(fā)貨地址表和收貨地址表而是把地址快照直接寫(xiě)進(jìn)訂單。這種做法在中小型物流系統(tǒng)里很常見(jiàn)——因?yàn)榈刂肥窍聠我凰查g的不可變信息如果發(fā)貨人或者收貨人后續(xù)改了地址訂單里記錄的仍然是下單時(shí)的地址不能跟著客戶檔案一起變。你也可以改成外鍵關(guān)聯(lián)但會(huì)損失這種「快照」語(yǔ)義。waybills 表是這套系統(tǒng)的樞紐車(chē)輛、司機(jī)、訂單三張表都通過(guò)它連接起來(lái)。注意它的字段里同時(shí)保存了assign_time派車(chē)時(shí)間、depart_time發(fā)車(chē)時(shí)間、sign_time簽收時(shí)間這三個(gè)時(shí)間字段不是冗余而是給財(cái)務(wù)對(duì)賬和時(shí)效分析用的。做物流調(diào)度的人最關(guān)心的就是「派車(chē)花了多久、路上跑了多久、簽收是否超時(shí)」沒(méi)有這三個(gè)時(shí)間戳后續(xù)做績(jī)效報(bào)表就無(wú)從下手。2.3 狀態(tài)機(jī)設(shè)計(jì)為什么訂單狀態(tài)要冗余三層拆這套源碼時(shí)我最留意的部分是狀態(tài)設(shè)計(jì)。orders、waybills、waybill_tracking 三張表里都有狀態(tài)相關(guān)的字段從表面看是重復(fù)的但拉住幾個(gè)業(yè)務(wù)場(chǎng)景想一遍就會(huì)發(fā)現(xiàn)每層各有用途。orders.status 服務(wù)于客服查詢和財(cái)務(wù)對(duì)賬回答的是「這筆業(yè)務(wù)走到哪一步了」waybills.status 服務(wù)于調(diào)度看板回答的是「這輛車(chē)這單貨現(xiàn)在是什么狀態(tài)」waybill_tracking 里的 action 字段則是一條不可變的事件流記錄的是每一個(gè)操作節(jié)點(diǎn)的痕跡。三者的關(guān)系用一張流轉(zhuǎn)表可以看得很清楚操作orders.statuswaybills.statustracking.action客戶提交訂單0待審核0未分配create客服確認(rèn)訂單1已確認(rèn)待分配0未分配confirm調(diào)度派車(chē)2運(yùn)輸中1待裝車(chē)assign司機(jī)發(fā)車(chē)2運(yùn)輸中2運(yùn)輸中depart客戶簽收3已簽收3已簽收sign訂單取消4已取消4已取消cancel異常掛起5異常件5異常件exception每次狀態(tài)變更時(shí)系統(tǒng)會(huì)同步更新 orders 和 waybills 的狀態(tài)同時(shí)往 waybill_tracking 里插一條不可變的流水記錄。這樣設(shè)計(jì)最大的好處是做數(shù)據(jù)對(duì)賬時(shí)只要看 tracking 表有沒(méi)有對(duì)應(yīng)的 action 記錄就能判斷某個(gè)狀態(tài)更新是系統(tǒng)正常流轉(zhuǎn)還是人為誤操作。后面對(duì)接第三方運(yùn)輸平臺(tái)時(shí)我正是靠 tracking 表拿到了完整的操作軌跡才敢放心對(duì)接。3. 核心業(yè)務(wù)模塊實(shí)現(xiàn)建單、派車(chē)、簽收三條鏈路的代碼細(xì)節(jié)看源碼不能光看表結(jié)構(gòu)真正的門(mén)道在業(yè)務(wù)腳本怎么把表串起來(lái)。這套系統(tǒng)里三個(gè)核心模塊訂單創(chuàng)建、派車(chē)分配、簽收確認(rèn)每個(gè)模塊都是「一次事務(wù)、多張表、狀態(tài)同步」的標(biāo)準(zhǔn)寫(xiě)法。建議你按這個(gè)順序讀代碼order_add.php - waybill_assign.php - waybill_track.php。3.1 訂單創(chuàng)建一次事務(wù)同時(shí)寫(xiě)入訂單表和運(yùn)單表真實(shí)的物流業(yè)務(wù)里一個(gè)訂單可能拆成多個(gè)運(yùn)單分批發(fā)貨但簡(jiǎn)易系統(tǒng)通常讓一張訂單直接對(duì)應(yīng)一張運(yùn)單??磑rder_add.php的服務(wù)端邏輯核心是這樣一段事務(wù)?php // 訂單創(chuàng)建訂單主表和運(yùn)單表在同一個(gè)事務(wù)里寫(xiě)入 require_once includes/db.php; require_once includes/functions.php; $pdo-beginTransaction(); try { // 1. 生成訂單編號(hào)規(guī)則日期 當(dāng)天自增序號(hào) $order_no ORD . date(Ymd) . str_pad($nextId, 4, 0, STR_PAD_LEFT); // 2. 插入訂單主表 $stmt $pdo-prepare( INSERT INTO orders (order_no, customer_id, sender_name, sender_phone, sender_address, receiver_name, receiver_phone, receiver_address, goods_name, goods_weight, goods_volume, status, create_time) VALUES (:order_no, :customer_id, :sender_name, :sender_phone, :sender_address, :receiver_name, :receiver_phone, :receiver_address, :goods_name, :goods_weight, :goods_volume, 0, NOW()) ); $stmt-execute([ :order_no $order_no, :customer_id (int)$_POST[customer_id], :sender_name trim($_POST[sender_name]), :sender_phone trim($_POST[sender_phone]), :sender_address trim($_POST[sender_address]), :receiver_name trim($_POST[receiver_name]), :receiver_phone trim($_POST[receiver_phone]), :receiver_address trim($_POST[receiver_address]), :goods_name trim($_POST[goods_name]), :goods_weight (float)$_POST[goods_weight], :goods_volume (float)$_POST[goods_volume], ]); $orderId $pdo-lastInsertId(); // 3. 插入運(yùn)單表初始狀態(tài)下車(chē)輛、司機(jī)都為空 $waybill_no WB . date(Ymd) . $orderId; $stmt $pdo-prepare( INSERT INTO waybills (waybill_no, order_id, vehicle_id, driver_id, status, create_time) VALUES (:waybill_no, :order_id, 0, 0, 0, NOW()) ); $stmt-execute([ :waybill_no $waybill_no, :order_id $orderId, ]); $pdo-commit(); header(Location: order_list.php?msgcreated); } catch (Exception $e) { $pdo-rollBack(); error_log(Order create failed: . $e-getMessage()); echo 建檔失敗請(qǐng)稍后重試或聯(lián)系管理員; }這段代碼有兩個(gè)關(guān)鍵設(shè)計(jì)。第一訂單編號(hào)不是靠數(shù)據(jù)庫(kù)自增主鍵直接拼出來(lái)的而是用date(Ymd)加當(dāng)天序號(hào)生成這樣訂單號(hào)在業(yè)務(wù)側(cè)就帶上了日期信息客服對(duì)賬時(shí)一眼能看出是哪天的單子。第二waybills表在創(chuàng)建時(shí)vehicle_id和driver_id都填 0狀態(tài)也填 0表示還沒(méi)有分配運(yùn)力。把「建單」和「派車(chē)」拆成兩個(gè)獨(dú)立操作是物流系統(tǒng)的常規(guī)做法——客服先錄單調(diào)度員后續(xù)再分配車(chē)輛職責(zé)邊界清晰。注意(int)$_POST[customer_id]和(float)$_POST[goods_weight]這種強(qiáng)轉(zhuǎn)寫(xiě)法原生項(xiàng)目里如果沒(méi)做過(guò)濾器強(qiáng)轉(zhuǎn)是成本最低的防類(lèi)型注入手段。后面改代碼時(shí)不要因?yàn)榭粗缶蛣h掉刪了反而給字符串注入留了口子。3.2 派車(chē)分配如何用 WHERE 條件擋住并發(fā)重復(fù)派車(chē)訂單創(chuàng)建之后下一步是調(diào)度員在waybill_assign.php里給運(yùn)單綁定車(chē)輛和司機(jī)。這里最容易被忽略的是更新的 WHERE 條件。?php // 調(diào)度派車(chē)僅允許“待分配”狀態(tài)的運(yùn)單被分配 require_once includes/db.php; require_once includes/auth.php; $waybillId (int)($_GET[waybill_id] ?? 0); $vehicleId (int)($_POST[vehicle_id] ?? 0); $driverId (int)($_POST[driver_id] ?? 0); if ($vehicleId 0 || $driverId 0 || $waybillId 0) { exit(參數(shù)錯(cuò)誤請(qǐng)返回重試); } $pdo-beginTransaction(); try { // 關(guān)鍵WHERE 條件里帶 status 0防止重復(fù)派車(chē) $stmt $pdo-prepare( UPDATE waybills SET vehicle_id :vehicle_id, driver_id :driver_id, status 1, assign_time NOW() WHERE id :waybill_id AND status 0 ); $stmt-execute([ :vehicle_id $vehicleId, :driver_id $driverId, :waybill_id $waybillId, ]); if ($stmt-rowCount() 0) { throw new Exception(運(yùn)單狀態(tài)已變更不能重復(fù)分配); } // 同步更新訂單狀態(tài)從“已確認(rèn)待分配”變?yōu)椤斑\(yùn)輸中” $stmt $pdo-prepare( UPDATE orders o JOIN waybills w ON o.id w.order_id SET o.status 2 WHERE w.id :waybill_id ); $stmt-execute([:waybill_id $waybillId]); // 寫(xiě)入軌跡流水 $stmt $pdo-prepare( INSERT INTO waybill_tracking (waybill_id, action, location, operator, remark, create_time) VALUES (:waybill_id, assign, 出發(fā)地, :operator, 調(diào)度派車(chē), NOW()) ); $stmt-execute([ :waybill_id $waybillId, :operator $_SESSION[admin_name] ?? system, ]); $pdo-commit(); header(Location: waybill_list.php?msgassigned); } catch (Exception $e) { $pdo-rollBack(); error_log(Assign failed: . $e-getMessage()); exit(派車(chē)失敗 . $e-getMessage()); }那段帶status 0的 WHERE 條件不是可有可無(wú)的裝飾。我見(jiàn)過(guò)不少新手改造這種系統(tǒng)時(shí)覺(jué)得這個(gè)條件多余把更新語(yǔ)句改成了只按主鍵WHERE id :waybill_id。結(jié)果就是兩個(gè)調(diào)度員同時(shí)點(diǎn)「派車(chē)」同一張運(yùn)單被分配到了兩個(gè)司機(jī)名下車(chē)輛和司機(jī)檔案全亂套。帶上狀態(tài)條件之后第二次更新rowCount()返回 0事務(wù)直接回滾拋異常這就構(gòu)成了最簡(jiǎn)單可靠的并發(fā)控制。另外注意更新訂單狀態(tài)用的是UPDATE orders o JOIN waybills w ON o.id w.order_id這種跨表更新寫(xiě)法。在 MySQL 里這是合法且高效的但如果你把這套邏輯移植到 SQLite 或者 PostgreSQLJOIN 更新語(yǔ)法就不一樣了遷移時(shí)要專(zhuān)門(mén)處理。3.3 簽收與軌跡回放狀態(tài)更新的同時(shí)寫(xiě)入不可變流水簽收確認(rèn)是整個(gè)鏈路的最后一步。這一塊的邏輯比建單還簡(jiǎn)單但業(yè)務(wù)上有一個(gè)講究簽收只能從「待裝車(chē)」或「運(yùn)輸中」兩個(gè)狀態(tài)進(jìn)入不能讓調(diào)度員把一單還沒(méi)派車(chē)的運(yùn)單直接點(diǎn)成簽收。?php // 簽收確認(rèn)運(yùn)單狀態(tài)必須是 1待裝車(chē)或 2運(yùn)輸中才能簽收 require_once includes/db.php; require_once includes/auth.php; $waybillId (int)($_POST[waybill_id] ?? 0); $remark trim($_POST[remark] ?? ); $pdo-beginTransaction(); try { // 限制狀態(tài)范圍防止越權(quán)流轉(zhuǎn) $stmt $pdo-prepare( UPDATE waybills SET status 3, sign_time NOW() WHERE id :waybill_id AND status IN (1, 2) ); $stmt-execute([:waybill_id $waybillId]); if ($stmt-rowCount() 0) { throw new Exception(當(dāng)前運(yùn)單狀態(tài)不允許直接簽收); } // 同步訂單狀態(tài) $stmt $pdo-prepare( UPDATE orders o JOIN waybills w ON o.id w.order_id SET o.status 3 WHERE w.id :waybill_id ); $stmt-execute([:waybill_id $waybillId]); // 寫(xiě)入簽收軌跡 $stmt $pdo-prepare( INSERT INTO waybill_tracking (waybill_id, action, location, operator, remark, create_time) VALUES (:waybill_id, sign, 收貨地, :operator, :remark, NOW()) ); $stmt-execute([ :waybill_id $waybillId, :operator $_SESSION[admin_name] ?? system, :remark $remark, ]); $pdo-commit(); header(Location: waybill_track.php?waybill_id . $waybillId); } catch (Exception $e) { $pdo-rollBack(); error_log(Sign failed: . $e-getMessage()); exit(簽收失敗 . $e-getMessage()); }軌跡回放查詢則非常簡(jiǎn)單但排序字段有個(gè)細(xì)節(jié)值得注意SELECT action, location, operator, remark, create_time FROM waybill_tracking WHERE waybill_id :waybill_id ORDER BY id ASC這里按id ASC排序而不是create_time ASC。原因是同一秒內(nèi)可能插入多條記錄create_time相同時(shí)無(wú)法保證先后順序而自增id一定能反映事件真實(shí)的插入順序。這個(gè)細(xì)節(jié)在數(shù)據(jù)審計(jì)時(shí)非常關(guān)鍵——如果兩條流水的時(shí)間一樣你靠id能分清楚誰(shuí)先誰(shuí)后靠時(shí)間字段就抓瞎了。3.4 管理看板動(dòng)態(tài) SQL 的實(shí)用寫(xiě)法與參數(shù)綁定系統(tǒng)首頁(yè)的主控臺(tái)邏輯比較簡(jiǎn)單查詢今日訂單數(shù)、運(yùn)輸中運(yùn)單數(shù)、待分配運(yùn)單數(shù)、可用車(chē)輛數(shù)。但訂單列表頁(yè)的搜索模塊才是查詢邏輯里最值得仔細(xì)讀的部分。它支持按訂單號(hào)、客戶姓名、手機(jī)號(hào)、狀態(tài)四個(gè)條件自由組合篩選用了一段典型的動(dòng)態(tài) SQLSELECT o.*, c.name AS customer_name, v.plate_no FROM orders o LEFT JOIN customers c ON o.customer_id c.id LEFT JOIN waybills w ON o.id w.order_id LEFT JOIN vehicles v ON w.vehicle_id v.id WHERE 11 AND (:order_no OR o.order_no :order_no) AND (:keyword OR c.name LIKE CONCAT(%, :keyword, %) OR o.receiver_name LIKE CONCAT(%, :keyword, %) OR o.receiver_phone LIKE CONCAT(%, :keyword, %)) AND (:status -1 OR o.status :status) ORDER BY o.create_time DESC LIMIT :offset, :page_sizeWHERE 11不是為了好看而是為了后面拼接動(dòng)態(tài)條件時(shí)不需要專(zhuān)門(mén)處理第一個(gè)條件前的AND關(guān)鍵字。在原生的 php 管理系統(tǒng)里這種寫(xiě)法非常常見(jiàn)。但要注意:status -1這種約定——所有狀態(tài)查詢都傳進(jìn)來(lái)一個(gè)值-1 表示「全部狀態(tài)」這樣就用一條 SQL 覆蓋了「選全部」和「選某個(gè)狀態(tài)」兩種情況。用 PDO 執(zhí)行這段 SQL 時(shí)LIMIT :offset, :page_size的兩個(gè)占位符必須用bindValue()顯式綁定為PDO::PARAM_INT不能用默認(rèn)的字符串綁定否則 MySQL 會(huì)報(bào)語(yǔ)法錯(cuò)誤。這是 PDO 一個(gè)非常容易踩的坑。4. 部署與改寫(xiě)的五個(gè)常見(jiàn)問(wèn)題從白屏到數(shù)據(jù)錯(cuò)亂的排查記錄這套源碼我實(shí)際部署了兩次中間踩了不少坑也幫別人排查過(guò)類(lèi)似問(wèn)題。最有價(jià)值的排查經(jīng)驗(yàn)集中在五個(gè)場(chǎng)景按出現(xiàn)頻率從高到低排列每條都按現(xiàn)象、原因、解決的順序?qū)懺谙旅妗?.1 數(shù)據(jù)庫(kù)導(dǎo)入失敗與 PHP 版本兼容從白屏開(kāi)始排查現(xiàn)象本地搭好 PHP 環(huán)境后訪問(wèn)login.php直接白屏或者頁(yè)面頂部拋出Fatal error: Uncaught Error: Call to undefined function mysql_connect()這樣的報(bào)錯(cuò)。數(shù)據(jù)庫(kù)導(dǎo)入時(shí)SQL 文件執(zhí)行到一半報(bào)錯(cuò)中斷。原因這套源碼是幾年前的產(chǎn)物存在兩種典型環(huán)境不兼容。第一老代碼里用了mysql_*系列函數(shù)這個(gè)擴(kuò)展在 PHP 7.0 起就被徹底移除了第二SQL 文件里如果混入了庫(kù)表前綴或者舊版 MySQL 的TYPEMyISAM語(yǔ)法在新版 MySQL 8 里會(huì)直接報(bào)錯(cuò)。解決把數(shù)據(jù)庫(kù)連接方式改成 PDO 或mysqliSQL 文件統(tǒng)一用 MySQL 5.7 兼容的語(yǔ)法。我最后用的組合是 PHP 7.4 MySQL 5.7這兩個(gè)版本兼容性最穩(wěn)。連接文件改造后的最小可用版本如下?php // includes/db.php 改造后的最小可用版本 $host 127.0.0.1; $db logistics; $user root; $pass your_password; try { $pdo new PDO( mysql:host$host;dbname$db;charsetutf8, $user, $pass, [ PDO::ATTR_ERRMODE PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES false, ] ); } catch (PDOException $e) { error_log($e-getMessage()); exit(數(shù)據(jù)庫(kù)連接異常請(qǐng)檢查配置); }PDO::ATTR_EMULATE_PREPARES設(shè)置為 false 很關(guān)鍵這會(huì)讓 PDO 強(qiáng)制走 MySQL 原生預(yù)處理而不是在客戶端模擬預(yù)處理。原生預(yù)處理不僅能防止大部分 SQL 注入還能讓LIMIT占位符綁定整數(shù)類(lèi)型時(shí)不出錯(cuò)。4.2 中文亂碼字符集三處不一致現(xiàn)象后臺(tái)錄入的中文地址和客戶姓名在列表頁(yè)顯示成???或者一堆亂碼。頁(yè)面刷新幾次后亂碼位置還會(huì)變化。原因字符集有三處沒(méi)有對(duì)齊——數(shù)據(jù)庫(kù)表默認(rèn)字符集不是 utf8、PDO 連接串沒(méi)指定charsetutf8、頁(yè)面 HTML 頭部沒(méi)有聲明meta charsetutf-8。這三處只要有兩處不一致中文就會(huì)在寫(xiě)入或讀取時(shí)被錯(cuò)誤解碼。解決統(tǒng)一改成 utf8。具體操作是先確認(rèn)表結(jié)構(gòu)SHOW TABLE STATUS查看每個(gè)表的 Collation 是否為utf8_general_ci。如果不是執(zhí)行ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci。然后確認(rèn) PDO 連接串帶charsetutf8頁(yè)面head里加 meta 聲明。如果數(shù)據(jù)已經(jīng)亂掉不要直接在原表上修補(bǔ)先把數(shù)據(jù)導(dǎo)出為 SQL用文本編輯器確認(rèn)導(dǎo)出文件的編碼是 UTF-8再清空原表重新導(dǎo)入。4.3 SQL 注入殘留搜索模塊里容易被忽視的隱患現(xiàn)象在訂單搜索框里輸入 or 11點(diǎn)搜索后整個(gè)訂單表的數(shù)據(jù)全部列了出來(lái)。再輸入 OR 11 --這種帶注釋的 payload有些頁(yè)面會(huì)直接報(bào)錯(cuò)暴露 SQL 片段。原因源碼里訂單搜索模塊還有直接用$_GET變量拼接 SQL 的老寫(xiě)法。它能正常查詢但對(duì)輸入完全沒(méi)做過(guò)濾屬于典型的注入殘留點(diǎn)。解決把搜索模塊全部改成 PDO 預(yù)處理語(yǔ)句這個(gè)改造要覆蓋三處登錄驗(yàn)證、訂單搜索、報(bào)表導(dǎo)出。登錄驗(yàn)證是最優(yōu)先要改的因?yàn)樽⑷胍坏┐蛲ň褪呛笈_(tái)權(quán)限直接丟失?php // 登錄驗(yàn)證用預(yù)處理替代字符串拼接 $stmt $pdo-prepare( SELECT id, username, role FROM admin_users WHERE username :username AND password :password ); $stmt-execute([ :username trim($_POST[username]), :password md5(trim($_POST[password])), ]); $admin $stmt-fetch();注意這段代碼里密碼用的是md5()這是源碼里遺留的老加密方式。二次開(kāi)發(fā)時(shí)一定要換成password_hash()和password_verify()并且把現(xiàn)有admin_users表里的存量密碼重新生成哈希。換加密方案的本質(zhì)不是改一個(gè)函數(shù)而是定一個(gè)新的密碼遷移策略——常見(jiàn)做法是在登錄時(shí)檢測(cè)到舊哈希驗(yàn)證通過(guò)后立即用新算法重新寫(xiě)入。4.4 時(shí)區(qū) 8 小時(shí)偏差狀態(tài)時(shí)間線錯(cuò)亂現(xiàn)象訂單創(chuàng)建時(shí)間是 16:00頁(yè)面上卻顯示 08:00。運(yùn)單軌跡里的assign_time和sign_time全部比實(shí)際時(shí)間早 8 小時(shí)。原因PHP 默認(rèn)時(shí)區(qū)是 UTCMySQL 服務(wù)器的時(shí)區(qū)也是 UTC。兩個(gè)環(huán)節(jié)各偏一次時(shí)間就整體少了 8 小時(shí)。這是用國(guó)外虛擬主機(jī)或默認(rèn)配置的本地環(huán)境時(shí)最常見(jiàn)的問(wèn)題。解決在入口公共文件index.php和login.php的頂部加一行date_default_timezone_set(Asia/Shanghai)同時(shí)把 MySQL 連接的時(shí)區(qū)也指到東八區(qū)。如果數(shù)據(jù)庫(kù)里已經(jīng)寫(xiě)入了 UTC 時(shí)間統(tǒng)一修改時(shí)區(qū)后再插入新記錄時(shí)存量數(shù)據(jù)的時(shí)間對(duì)比會(huì)有偏差需要把存量數(shù)據(jù)也轉(zhuǎn)一次。我一般用一條更新語(yǔ)句把已經(jīng)錯(cuò)亂的時(shí)間字段統(tǒng)一加 8 小時(shí)但這一步要在備份后執(zhí)行不能上來(lái)就改。4.5 重復(fù)提交產(chǎn)生重復(fù)訂單唯一索引與事務(wù)兜底現(xiàn)象客服快速雙擊「提交訂單」按鈕數(shù)據(jù)庫(kù)里出現(xiàn)了兩條一模一樣、只有自增 ID 和訂單號(hào)不同的訂單。對(duì)賬時(shí)客戶說(shuō)只下了一單系統(tǒng)卻顯示兩單。原因表單沒(méi)有做防重復(fù)提交處理后端也沒(méi)有唯一索引約束。訂單號(hào)是 PHP 端生成的重復(fù)提交同一個(gè)表單會(huì)生成兩個(gè)不同的訂單號(hào)數(shù)據(jù)庫(kù)層面根本攔不住。解決以后端兜底為主。第一步給orders.order_no加上唯一索引ALTER TABLE orders ADD UNIQUE INDEX idx_order_no (order_no);第二步插入訂單時(shí)改成預(yù)檢查加事務(wù)的寫(xiě)法。如果檢查到同一訂單號(hào)已存在直接終止并提示用戶不要重復(fù)提交而不是讓事務(wù)覆蓋寫(xiě)入。前端的防重復(fù)提交也要做最樸素的做法是提交按鈕點(diǎn)擊一次后禁用但前端控制只是體驗(yàn)優(yōu)化真正的防線仍然在后端唯一索引上。5. 進(jìn)階改造把平鋪腳本做成分層給物流系統(tǒng)留出擴(kuò)展余地源碼拿到手里是一堆平鋪的 PHP 腳本每個(gè)腳本里同時(shí)做收參數(shù)、查數(shù)據(jù)庫(kù)、拼 HTML 三件事。這種寫(xiě)法從零到一跑通業(yè)務(wù)沒(méi)問(wèn)題但接下來(lái)要加一個(gè)物流費(fèi)用結(jié)算模塊時(shí)就得在十幾個(gè)腳本里重復(fù)貼一樣的 SQL——改一處忘了另一處就是事故現(xiàn)場(chǎng)。所以第二步改造我建議把重復(fù)的數(shù)據(jù)庫(kù)操作抽出來(lái)做一層簡(jiǎn)單的 BaseModel。?php // includes/BaseModel.php —— 基礎(chǔ)增刪改查封裝 class BaseModel { protected $pdo; protected $table; public function __construct(PDO $pdo, string $table) { $this-pdo $pdo; $this-table $table; } public function getById(int $id): array { $stmt $this-pdo-prepare( SELECT * FROM {$this-table} WHERE id :id ); $stmt-execute([:id $id]); return $stmt-fetch() ?: []; } public function updateStatus(int $id, int $status): int { $stmt $this-pdo-prepare( UPDATE {$this-table} SET status :status WHERE id :id ); $stmt-execute([:status $status, :id $id]); return $stmt-rowCount(); } }然后在對(duì)應(yīng)業(yè)務(wù)文件里只需要繼承這個(gè)基類(lèi)并在子類(lèi)中寫(xiě)自己的業(yè)務(wù)方法比如createOrder()、assignVehicle()、signWaybill()。這一步做完最大的變化是業(yè)務(wù)腳本從十幾頁(yè)縮到幾頁(yè)SQL 只出現(xiàn)在模型層頁(yè)面腳本里只剩參數(shù)接收和模板渲染。驗(yàn)證重構(gòu)是否成功方法很直接本地起一個(gè) PHP 內(nèi)置服務(wù)器用瀏覽器把建單、派車(chē)、簽收三個(gè)動(dòng)作完整走一遍看waybill_tracking表里生成的流水順序是否和操作順序完全一致。保持一致說(shuō)明狀態(tài)流轉(zhuǎn)沒(méi)有被重構(gòu)改壞不一致就用第 4 章排查方法逐步定位。我的個(gè)人習(xí)慣是拿到這種完全開(kāi)放的源碼后絕不急著改業(yè)務(wù)而是先把數(shù)據(jù)庫(kù)結(jié)構(gòu)導(dǎo)出一份存到版本庫(kù)里再做一份只讀的數(shù)據(jù)字典把每張表字段含義和狀態(tài)值說(shuō)明寫(xiě)清楚。后來(lái)有一次項(xiàng)目急著對(duì)接第三方運(yùn)輸平臺(tái)對(duì)賬時(shí)全靠這份數(shù)據(jù)字典直接根據(jù)平臺(tái)返回的狀態(tài)碼映射到 orders 新增的一個(gè)狀態(tài)字段半小時(shí)就完成了對(duì)接。從那以后我每次拿到新系統(tǒng)都強(qiáng)制先做數(shù)據(jù)字典再碰業(yè)務(wù)代碼。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲欧洲精品成人| 蜜臀久久99精品久久久久久酒店 | 亚洲一区二区三区四区视频| 美女性91| 很狠操| 国产一级做a爰大片免费久久| 天天综合站| 熟女人妻久久中文字幕一二区| 国产黄色小视频网站| 欧美日韩天堂| 亚洲免费精品一区| 人妻-91porn| 在线中文字幕| 2017天天插| 熟女网站最新| 青青青国产| 秋霞曰韩R级| 国产熟妇 码视频户外直播| 91超碰在线观看| 狠狠搞 亚洲91| 懂色AV蜜臀无码精品APP | 黄片qw| 亚州色综合| 熟妇乱伦一区二区| 囯产精品久久久久久久久久二区三区| 99精品综合久久久久五月天| 久久欧洲| 国产青一二三| 国产久久视频| 久9久| 91碰碰碰| 色蜜AV| 免费人成?大片在线播放| 操东北女人| 蜜臀久久99精品久久久| 91麻豆天美国产欧美高潮| 九九无码久久精品视频| 国产精品爽爽va在线观看98| 做爱A级亚欧| 欧美日韩国产成人高清| 欲香欲色| 免费国产电影一区二区| 欧美色www亚洲国产阿娇要播| 久操免费电影| 97免费在线观看| 蜜臀久久久99久久久久| 一本色道久久综合精品婷婷| 91久| 无码国产精品96久久久久孕妇| 91综合天天看| 久久99久久99精品天美传媒棢·纸:.| 超碰在线1234区| 色噜噜人妻丝袜AV资源| 国产尤物在线三区| 97美日韩视频| 97视频免费播放| 视频二区美腿制服人妻欧美| 国产91丝袜 在线播放| 极品少妇久久久久| 天美91| 中文字幕在线观看网址| 国产日韩精品suv| AV一区观看| 日本韩国国产精品一区| 性开放中文AV高清无码免费看| 日韩在线性爱免费视频| 久久久久久久国产a∨| 久久男人精品| 精品伊人久久久大香线蕉小说| 久久精品国产亚洲AV高级北京| 国产亚洲色婷婷久久99精品91 - 百度| 久这精品中文在线观看视频| 日本人妻最新在线中| 超碰在线人妻中文字幕| 3028国产精品| 老鸭窝亚洲毛片| 欧美少妇色综合| chaopen97久久| 欧美特黄视频网站| 丁香色婷婷| 99在线免费视频| 毛片视频白嫩| 国产精品在线一区二区| 熟妇熟女一区二区三区| 91精品久久久久五月天精品| 激情小说五月天| 中文字幕少妇色| 欧洲精品网| 香蕉精品二区二区| 国产成人精品无码久久| 屌逼传媒| 色www精品视频在线观看| 亚洲男人天堂网站| 一级啊性爱在线视频| 丁香五月影院| 中文字幕人乱码中文字的预防方法 | www. 男人天堂成人在线| 久久香蕉国产线看观看亚洲女人| 狠狠久久手机视频精品| 大香蕉手机视频| 狠狠图片青青草| 日本ZZ高免费A级视频| 爱妃国产亚洲视频中文字幕| 91国产精品在线看| 99国内熟女露脸视频| 精品夜夜澡人妻无码AV| 久草网站免费在线观看| 亭亭丁香激情| 最新制服中文第一页| 69少妇一区二区| 婷婷综合网站| 久久激情四射婷婷丁香五月天| 亚洲乱码精品一区二区| 色五月综合网| 78精品在线| 日韩国产不卡在线视频| 99在线观看无大码| 国产最火爆久久国产网站网站| 蜜乳AV一区| 欧美日韩国产中文精品字幕自在自线,| 色偷综合| 成人a大片在线观看| caopeng97人妻| 91精品人妻啪啪间| 精品少妇人妻av久久免费| 91国产精品在线看| 97狠狠| 日韩激情啪啪| 亚洲色图第四色| 午夜啪啪片| 成人一区二区三区四区| 黄色电影在线播放综合网站 | 欧美熟妇亚洲版| 思思久热在线精品66| 五月婷婷六月丁香| 国产精品播放| 丰满少妇人妻久久久久久| 插日本熟女视频| 久热69九色熟妇97| 亚洲精品97| 久久久九97| 亚洲人妻五月丁香婷婷| 激激五月| 亚洲毛片基地专区| 性色avv| 日韩射精| 欧美成人综合| 日韩偷拍一区二区三区| 人妻无码视频一区二区三区久久| 人成午夜免费大片| 人妻少妇精品久久久久久久| 亚洲资源网| 色牛aV| 99啪啪| 啪啪啪东京| 中 文字幕一区二区三四 五 区日 日 骚| 超碰色综合| 超AV色女| 91精品微拍福利| Aa东京男人的天堂| 色999五月色| 亚洲97在线观看| 久久內射| 99热亚洲| 久久夜夜| 天天插天天操天天摸天天射天天看| 强奸乱伦亚洲第一页| 欧美一区二区成人一卡| 中亚av| 中日韩欧美精品无码AⅤ一区二区| 欧美精品黑人猛交高潮| 麻豆 亚洲 97| 天天日日本| 性爱久久| 免费看黄视频亚洲网站| 尹人免费观看视频在线| 99久久久| 天天天天天天天天综合| 婷婷五月综合激情| 在线中文字幕| 欧美性爱超碰97| www.婷婷六月天| 国产一级不卡在线观看| 黄色激情电影在线观看| 中文字幕99999| 久久久一区二区| 自拍盗摄一区| 麻豆天美国美国产| 久久黄黄| 久99视频| 黄色性爱网网| 亚洲欧洲视频小说在线观看| 亚洲成人福利电影免费| 久久久久久久伊人精品| 精品无码秘 人妻一区二区| 黑人性欧美| 人妻美腿丝袜日韩| 尤物AV免费网站| 龙兴卡官方查询| 久插综合| 啊啊啊啊二区好大| 青青草精玖玖69精品| 天天综合网久久ww| 干b在线性社区| 天美精品av| 91一区二区| 极品色社| 三级片大波波| n1038 一二三区| 伊人大香蕉在线| 狼人综合婷婷激情四射 | 在线观看AV片| AAAAAAAAA黄片| 自怕偷自怕亚洲精品| 久久久久久人妻一区精品色欧美| 九九视频黄色片| AV乱伦专区| 久久免费99精品久久久久久| 欧美自拍偷拍综合图片| 草草影院日本第一页| 韩日性爱av| 欧美日韩激情无码专区| 特级丰满少妇一级AAAA爱毛片| 97人人操人人摸人人爱| 丰满人妻大屁一区二区| 岛国AV一区二区电影| 亚洲五区熟女| 久久原创中文| 天天干人人乐| 伊人一区二区在线播放| 国产福利小视频高清在线观看| 看日韩操逼| 九九成人视频| 中文有码第五页| 久神马| 骚妻少妇精品性色无码四色A V| 久久精品99| 91操熟女| 亚洲 一区二区 自拍| 五月天激情影院| 九九综合| 国产青青美女玩逼视频| 东京热男人的天堂| A 天堂在线观看视频| 亚洲精品丝袜-不卡成人免费……| 国产人伦精品一区二区三区| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 曰韩av中文字幕专区| 久久精品一区二区三区不卡| 一二三四视频在线社区中文字幕| 日韩99999| 欧美日韩啪啪电影| 天天操夜夜操| 大屁股熟女一区二区三区| AV女优男人的天堂| 九九久久精品| 新精精品久久精品| 91综合色噜噜| 婷婷五月花| 97在线观视频免费观看| 国产高清自拍视频| 开心五月婷婷| 蜜臀网址在线| 欧美亚洲日本激情在线| 97这里都是精品| 精品97久久| 欧美黄片免费在线观看视频| 日本人妻一区二区| 欧美日韩资源| 日日日日日| 91无码人妻| 亚洲精品自拍| 性色乱AV一区二区| 国产品精品自在在线午夜免费| 日本精品不卡一二三区| 中文字幕第95页| 日韩黄片视频试看| 亚洲综合贴图91| AⅤ片水多多| 激情一区二区三区在线观看| 午夜小电影在线插入淫高潮| 久久思思热| 又黄又硬又粗又长国产视频| 国产成人精品无码久久| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 操逼视频国产无套| 北京美女一区二区| 日韩性爱毛片操骚逼| 日本天堂网| 久久精品熟妇丰满人妻99| 久久性爱城| 日本精品一区二区三| 人妻 丝袜美腿 中文字幕| 97色色色综合网站| 国产特级毛片AAAAAA高潮流水 | 综合天天网| 少妇一区二区三区精选| 少妇天堂网络| 日韩亚洲中文有码视频| 国产1727欧美| 日韩av不卡在线观看| 国产熟女高潮一区二区三区| 5278欧美一区二区三区| 精品人妻一区二区蜜桃视频| 婷婷色播婷婷| 天天综合欧美| 中文字幕88av在线| 日韩无码a片| 久久人妻无码毛片A片麻豆| 中国东北熟女老太婆内谢| 亚洲综合 欧美| 日韩乱伦影音先锋| 欧美综合天堂| 国产精品久久久777| 国产大学生口爆吞精合集| 我爱搞逼综合网| 色99在线| 日本人妻伦在线中文字幕| 亚洲男人天堂2016| 色小视频蜜乳| 黄色人人| 清纯唯美第一页| 中文字幕二区日韩天堂| 正在播放国产精品一区| 久久天堂网| 黄色AV影视| 日本一区二区三区免费观看| 久久是精品| 国产欧美伊人| 久久精品国产免费观看99| 国产精品爽爽v| 亚洲无线码欧洲精品区别| 婷婷伊人綜合中文字幕| 秋霞一级鲁丝片A片| 91精产一区二区三区| 久久久国产成人一区二区三区在线| 欧美色图 色综合图| 中文字幕超碰CAO| 一区在线国产播放| 免费av在线播放二区| 五月天人妻综合| 福利风月五月天影院| 国产精品极品美女视频| 97超碰久久| 亚洲AV色图一区| 久久久久久久久久久久久9999| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 997色在线| 国产怡红院| 成人免费在线网站| 成人av影院在线观看| 97在线视频免费看| 91在线一起| 狠狠亚洲| 欧美97日韩| 人人摸人人干| 狠狠操狠狠| 日韩精品中文字幕一| 91香蕉国产尤物视频| 91日日夜夜| 色天使大香蕉| 9精品在线| 国产亚洲一黄| 丁香婷婷色五月| 成人网站 免费观看| 91性高朝久久久久久久久| 欧美色图另类图片| 爱丝福利| 加勒比色综合| 神马影院午夜福利久久久| 欧美九九爱| 欧美激情综合| 超碰av在线| 天堂8在线新版官网| 强奸国产精品视频| 26uuu性| 大香蕉免费3| 91丝袜在线观看| 91丝袜美女视频| 精品天堂| 亚洲欧美不卡线| 欧美偷拍| 夜夜爽夜夜爽| 国产粉嫩蜜臀av一区二区三区| 蜜臀久久99精品久久久久久酒店 | 91大神电影天堂| 婷婷五月天网| 欧美日韩性感| 色呦呦、国产精品| 久久九精品| 欧洲亚洲人人爽爽视频| 欧美淫乱视频| 大香蕉伊人75| 国产又猛又粗又爽又黄| 欧美人与性动交a美精品| 免费精品人妻一区二区三| 九九精品99| 国产无马视频| 啪啪综合网| 天天综合色电影| 黑丝少妇麻豆| 91nbbbbbb| 伊人96在线| 一卡二卡在线播放| 久久久96| 亚洲中文一区二区三区| 岛国片在线观看视频亚洲| 色99视频| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 视频一区二区三区精品| 约操熟妇| 日本久操视频| 97jingpin| 久久少妇| 国产精品一区二区黄片| 磁力99AV| 96国产精品| a级免费在线观看| 成在线人在线观看视频| 激情五月综合| 大香蕉在线免| 九九九国产| 中文日本免费高清| 97色婷婷| 男人把坤坤插入女人的下体| 91欧美经典| 人人操人人干网页| 校园春色 男人天堂| 无码人妻精品一区二区三区九九| 四虎影视精品| 国产精品久久久久中文字幕| 青青草吊丝| 四虎影视国产精品| 国产精品女生av| 日韩人妻精品久久久久| 日韩av电影网站| 国产精品99999| 人人干人人操人人..com| 九九天堂| 97久久超碰日韩精品| 日本性爱欧美性爱| 黄色大片一区二区密桃丝袜| 精品9999| 亚洲精品精品一区二区| 日韩精品人妻中文字幕久久久| 中文字幕黄色一起草| 人人看人人爰人人操| 天天综合在线4| 夜夜嗨老熟女AV一区二区三区| 一级乱伦网站| 国产精品天美传媒| 久久精品—区二区三区内射| 97任你吞精| 国精综合一二三区影视| 天天看天天干| 欧美三级一级| 亚洲 欧美 日韩 国产一区二区 | 美女丝袜激情小说| 青青操综合网| 成人在线视频一区| 国产精品探花色| 蜜臀亚洲中文| 伊人网青青| n1038 一二三区| 精品对白久久不卡| 天天爽天天| 日韩欧美女求操每天更新| 被体育老师抱着c到高潮| 亚洲drav色图| 久久男女激情视频网站| 色与欲影视天天看综合网| 色青青久久影视| 久久亚洲日韩国产欧| 国产99久久99热这里只有精品15 | 超碰无码加勒比| 好吊色一区| 黄片qw| 黄页av| 欧洲色| 啊啊啊在线观看| 五月天色图| 国产一区二区三三视频| 美美91成人国产精品欧美精品久久久久久久| 欧美岛国精品在线观看| 嫩草伊人久久精品| 久久人人舔人人爽舔人人av片| 啊啊啊啊啊舒服| 免费的黄片wwwwww| 亚洲男人电影天堂| 欧美成人色| 成年人性爱日韩| av橘色网站| 综合网欧美在线| 国产精品一区二区手机看片| 亚洲爱爱视频一区二区| 九九色逼| 成人26uuu| 国产成人精品一区| 精品精品精品| 欧美日韩国产三级黄色| 97超级久久| 日本不卡高清免v欧美日韩在线观看| 精品久久无码午夜福利| 天天天操天天天爱| 夜夜爽77777| 亚洲小电影免费涩涩成人在线高清| 欧洲亚洲人人爽爽视频| 五月天丁香欧洲日韩| 国产日韩区| 夜夜高潮夜夜爽夜夜爱爱一区| 色噜噜国产在线| 操逼操逼逼操操逼91 | 日本超碰在线国产一区| 无码国产Av| 天天92av| 男人天堂网手机版婷婷| 啊啊啊啊啊啊啊国| 操逼日韩无码| 亚洲一区二区三区不卡国产欧美| 久久久久久久9999| 久操视频免费观看| 欧美精品91| 亚洲色综合| 亚洲成人av电影在线| 在线不欧美| 嗯嗯啊啊日韩精品| 精品人妻夜夜草| 香蕉久久国产AV一区二区| 久久首页| 伊人操你| 欧美一级A一级a爱片久久| 综合性视频99| 加勒比海成人视频网| 亚州少妇| 超碰av人人人| 婷婷丁香五月激情啪啪| 国产不卡免费在线视频| 亚洲无码成人精品| 人人弄人人摸| 色色毛片| 综合97| 天天夜夜rb| 日本 情色 1区2区3区| 日韩人妻精品中文字幕| 日本免费不卡二区| www.欧精品| 久久天天性久久伊人| 99热最新网址| 欧美日综合| 亚洲欧美日韩中文久久自慰| 激情四射五月天| 69久久久久久久久久久久久| 四虎国产成人精品免费一女五男| 亚洲最大的黄色电影网站。| 男人天堂.AB| 欧美熟爽综合| 一区二区三区日韩欧美| 亚洲色性情三级| 加勒比AV网| 亚洲欧洲无码97久久精品| 9/A片 | 欧美综合传媒| 99精品无码| 偷拍导航视频网站| 97超碰站| 一本色道久久天天射天天干| 亚洲欧洲综合成人av一区| 亚洲成人免费中文字幕| 日韩亚洲Av人人夜夜澡人人爽| 免费在线观看国内色片网站网址| www成人啪啪18秘 免费| 丁香五月色| 综合影院亚洲| 丁香五月天久久精品视频一区二区三区| 亚洲图片欧美制度| 欧洲精品一二三在线| 一区二区播放| 曰韩中文人妻视频| 免费一级精品啪啪视频| 国产精品自拍欧美在线| 丁香五月激情综合| 国产精品网站免费| 91天天综合在线观看| 综合欧美亚洲| 国产99精品一区二区三区免费| 人妻在线视频| 4141514逼喷水三级片| 伊人伊人LD| 在线洲亚线| 26uuu成人影片| 一区二区三区视频在线观看免费| 韩国久久97| 使劲用力艹少妇视频一区二区| 亚洲女人毛茸茸91| 欧美国产精品久久九九| 国产精品宅男免费| 老女人爆菊| 97se综合| 亚洲国产成人7777| 九月婷婷久久| 中国的操老妇女| 丰满人妻一区二区三区蜜桃视频| 人人艹亚洲| 久久久人体| 福利大香蕉| 欧美岛国精品在线观看| 99久久9| 亚洲男人天堂2013| 97啪啪| 日韩中文字幕二区| 素颜老阿姨乱情色| 84YTCOM性无码| 999岛国大片| 超碰夫妻97| 国产精品高潮久久久无码| 欧美久久伊人| 北京美女一区二区| JIZZJIZZ亚洲女人被躁| 开心激情婷婷| 欧美后入式| japan日本高清乱xxxx| 和协无码影院| 91美女网站| 五月丁香啪啪啪| 婷婷五月天色网| 久久久久亚洲?V片无码V| 天天日日日射| 久久久久久99AV无码免费网站| 婷婷色综合| 美女91网址| 干婷婷综合网| 一二三卡欧美日韩人妻免费精品| 久久久久亚洲av综合波多野制衣| 嗯嗯嗯啊啊啊操的我好爽| 婷婷中文网| 日韩熟女视频二区| 欧美黑人精品一区二区| 美女91色黄18| 艹比视频国产精品| 国产精品乱码久久久、久久| 国产精品久久久久久久黄无码 | 国语对白露脸XXXXXX| 国产天美欧美| 国产精品美女视频诱惑| 久久久久久久久久久久久久久性生活视频 | 白丝AV| 无码99| 美女被啪到深处抽搐视频| 天天色悠悠激情| 国产日本一区二区三区蜜臀在线观看| 国产精品一二三区福利| 欧成人精品H无码| 999久久久久久久精| 视频国产欧美在线播放| 欧美国产视频| 日韩一级特黄av毛片| 九九热午夜欧亚国产视频| 亚洲欧美日韩精品久久久一区二区| 黄色一区三区| 五月天丁香网| 97爱爱| 性爱AV天堂| 国产伦乱91| 精品人妻一区二区三区不卡断 | 2017,超碰| 超碰亚洲97| 美日韩男女操屄视频| 欧美韩国你懂得在线| av日韩在线观看电影| 一区二区三区一亚洲中文字幕、综合区灬| 狠狠五月天| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 亚州色图第三区| 中国农村熟妇毛片视频| 九九亚洲色在线观看| 色噜噜婷婷| 国产午夜在线观看| 日韩熟女视频二区| 偷拍网站久久男女男| 手机看片日韩人妻| 国产麻豆91欧美一区二区久久婷婷国产精品| 亚洲激情综合| 欧美91视频| 欧美九九九| 久久只有精品一区二区三区| 综合欧美日韩在线观看| 蜜臀99久久| 91熟女.com| 久操99| 91操人| 五月亭亭六月丁香| 亚洲自拍青操视频| 人妻一区久久二区三区色播| 欧美黄色大香蕉一区二区| 亚洲精品久久久久毛片A片拉屎 | 丁香五月激情啪啪| 三级色综合| 中出欧美| 人妻人久久精品中文字幕| 日日日啊啊啊| 五月婷婷六月丁香| 97精品熟女少妇一区| 男人的天堂2018| 五月天九九日国产精品一区二区三区| 日韩av熟女一区二区三区成人| 日本Xx性爱| 无码一区免费在线不卡| 操逼操网| 强奸乱伦AV一天堂网| 欲香欲色综合天天伊人| 粉嫩av一区二区三区四季| 韩国轻伦国内自拍一区| 超碰99在线观看| 中国东北熟女老太婆内谢| 在线视频免费观看午夜| 亚州性色| 中文字幕第二页| 秋霞鲁丝午夜无码一区二区三| 97视频在线观看播放与子乱对白在线……| 亚洲AV无码国产成人| 波多野结衣被操50分钟免费视频| 国产精品久久久吖| 亚洲欧美日韩偷拍色图| 色综合91好| 99热精品在线观看| 欧美综合色| 人人爽夜夜玩视频| 日韩97精| 久久高清无码夜夜操| 亚洲欧美日产国产91毛片| 天天香香欲综合| 青青草亚洲一区| 青青11操操操操操操操操| 久久性爱视频| 激情综合97| 天天透伊人| 亚洲日韩肥臀视频在线观看| 天天看天天综合成人网| 国产欧美伊人| 800zy一区二区| 狠肏骚人妻| 一区,二区,三区视频| 欧亚日韩三区| 日本熟妇精品九九| 丰满熟女人妻一区二区三五十一路| 夜夜青青无码影院| 亚洲激情欧美色图| 超碰97国产欧美| 人妻夜夜爽天天爽三区麻豆AV网站| 九九九网站| 2024年最新色情网站在线观看| 99色网| 久久天天艹| 浪人综合网| 婷婷五月综合在线| 久久久久久久一级黄色打同平台| 美女啊啊啊啊啊啊啊| oumeisetupian| 欧色性第一页| 亚洲区小说| 亚洲色图91| 亚洲国产91精品一区二区久久| 蜜乳AV一区| 亚洲天堂久久| 校园春色综合色| 91无摭挡| 欧美综合网A| 久久性生大片免费观看性| 日本成人A片网站| 成年人一级黄色毛片大全在线观看| 欧美日综合| 中文字幕精品人妻丝袜| 吊色| 探花精品 一区二区| 18啪啪手机免费性爱| 人妻日日干| 老女人爆菊| 超碰到97情色| 人妻少妇久久中文字幕一区二区 麻豆| 国产黄色影片在线观看| 中日高清无码操逼视频| 91美乳| 国产suv精品一区| 日韩免费av片高清无码| 十八禁啪啦拍视频无遮挡| 久久久99久9| 欧美女同在线| 美日韩男女操屄视频| 深田咏美亚洲精品福利社| 久久9精品视频| 国产视频97| 欧美性爱免费短视频| 调教熟妇 久久久久久| 动漫av中文| 加勒比伊人| 免费视频a级毛片免费视频| 亚洲熟妇熟在线电影视频| 亚洲 欧美 日韩另类 麻豆| 日韩免费高清大片在线| 五月天丁香| 熟妇一区,二区,三区。| 中文字幕高清精品一区| 69精品少妇一区二区三区蜜桃| 91东京热男人的天堂| 日本欧美成人片AAAA| 青草园大香蕉| 国产日逼视频| 欧美日日夜夜| 欧亚日韩一区在线| 97色干| 91精品婷婷国产综合久久| 欧美午夜视频免费观看| 熟妇视频一区二区三区在线观看| 亚洲性高潮| 色欲天天综合网| 麻豆区久久久久亚| 中文字幕精品一区二区精| 欧美综合色站| 日韩免费av片高清无码| 久久久久精| 久久色精品视频在线| 人妻久久久| 97久久久网站| 综合五月婷婷| 久久九九97| 色色婷| 五月天婷婷社区| 色狠狠综合| 麻豆一区二区AV天美| 静品嫩模一区二区| 美女爽到高潮91| 日韩黄色成人性爱| 超碰色大香蕉| 日韩一级片| 啊啊啊啊嗯嗯在线久久久| 国产97色在线| 久久粉色| 欧美性爱97超碰| 欧美激情激情xxxx欧美专区| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 免费av在线播放二区| 久操操| 亚洲AV无码AV吞精久久久久| 加勒比五月天| 亚洲欧洲日韩国产自在线| 国产中午字一暮区| 色啪网| 超碰78| 欧美精品双插| 国产一区二区三区导航| 亚洲九九视频| 91久久国产综合久久| 熟女激情综合网| 91老熟女老女人国产老太| 亚洲 一区二区 自拍| 91天天爽| 99爱精品| 日韩久射综合| 色人久久| 97伪v| 国产精品爽爽va在线观看98| 天天躁夜夜躁狠狠躁AV| 99热在线观看| 成人毛片免费| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 成年女人一区| 日韩精品色呦呦| 超碰到97情色| 超碰亚洲欧美日韩无| ji熟女.com| 精品久久久一本一道| 猛交交| 久久riav中文精品| 亚洲区 欧美区| 91色图片| 日本三级日本三级99| 天天上日日上日韩精品| 狠狠爱AV| 91原创在线观看| 最新中文字幕在线亚洲| 超碰91在线| 尤物视频偷拍免费| 国产视频三区四区| 强奸乱伦大香蕉网| 亚洲av噜噜噜噜噜噜| 欧洲性人爱视频| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 精品欧美日韩在线观看| 欧美熟爽综合| 天天躁日日躁XXXXYY| 国产精品爆乳懂色蜜乳| 亚欧无码线免费观看视频| 中文字幕神马久久| 色妹子A V| 欧美亚洲日本激情在线| 免费精品国偷自产在线在线 | 自慰白浆在线观看| 国产精品4p在线观看| 精产品久久| 精品中文日韩字幕视频| 美女啊啊啊啊pc| 亚洲乱熟女一区二区三区大香蕉| 日韩在线欧美精品一区二区| 久久久91| 啊啊啊轻点在线观看| 国产中文福利| 国产视频一区二区在线| 色区久久| 免费看久久久性性| 国产精品无码久久久久2028| 日本精品一级二级三级| 一二三区精品视频| 久久久草草精品| 97在线观视频免费观看| 色综合加勒比四四季| 97色伦欧美| 五月天激情婷婷| 天天做日日爱夜夜爽| 在线国产福利网址导航| 不卡中文字幕aⅴ在线| 91麻豆天美| 国产三级片在线观看| 熟妇人妻丰满久久久久久久无码| 人人澡人人澡人人| 任我爽在线视频免费观看| 超碰这里只有精品| 天天α片| 四虎国产成人精品免费一女五男| JULIA人妻风俗店中出电影| 日韩天美| 美女超碰978| 女优免费一区二区永久| 九月婷婷| 防屏蔽在线视频| 激情第四色| 涩五月婷婷| 婷婷五月影院| 日本三级久| 久久久久久性爱片| 99久久无色码| 天天做天天爱天天爽AV| 99www.bibizy香蕉资源国产一区二区三区高清 | www.高清无码诱惑一区.com | 久久久99久9| 亚洲AV乱码专区国产噜噜亚洲| 欧美亚洲激情小说| 超碰97男人| 97在线观视频免费观看| 啊啊啊好疼| 黑丝制服中文字幕| 亚洲人妻久久| 亚洲av综合伊人久久| 国产AV色黄看到爽| 一区二区三区 日韩欧美| 日韩成人大片一区二区| 99热官网| 国产av青草| www.男人天堂| 亚洲操操操无码| 97免费视频在线观看| 日韩极品无码B| 亚洲成人福利电影免费| 久操热| 蜜桃久久久久久| 久久99精品国产| 亚洲中文字幕av| 日韩肏逼视频| 国产精品久久久无码AV网站| 日韩另类| 好吊色一区| 日本亚欧爱爱| 秋霞 色色| 欧美丝袜制服久久| 9久综合网| 日本新免费二区三区| 亚洲欧美综合网| 欧州一区二区三区四区| 亚洲欧美日韩精品久久久一区二区| 成人欧美一区二区三区黑人一| 久久亚州高清| 大香蕉2017| 亚洲高清视频在线免费观看| 特级毛片特黄久久免费看| 亚洲精品男人的天堂| 97这里只精品| 男人久久天堂| www.91理论| 亚洲精品97在线| 天天天操天天天爱| 美日韩男女操屄视频| 熟女视频久久| 热久久99999| 青青草好吊色| 亚洲无码AV九九九| 天天综合网91入口| 九九九九热只有精品| 日韩av电影成人在线| 思思热在线视频精品| 嫩草影院永久在线制服丝袜| 资源新线在线天堂| 亚洲精品中文字幕一区在线视频 | 亚洲成aⅴ人片不卡无码| 亚洲色五月| 狠狠躁天天躁日日躁97| 日本一区二区中文字幕久久| 欧美日韩操逼嗦吊| 麻豆国产成人精品| 黑人免费福利视频| 超碰99在线观看| 操逼短片| 国产精品亚洲一级av第二区| 2020视频1区2区3区| 中文字幕第二页| 亚洲欧美在线观看2021| 超碰97最新人妻| 国产在线综合网| 啊啊啊用力在线观看| 无套后入双马尾| 无码少妇精品一区二区60岁老人| 99色日| 色色网91| 午夜精品久久久久久久99热影院| 97日韩| 国产一区二区三区中文字幕| 精品免费囯产一区二区三区| 国产精品久久久鸭无码的功能| 综合91网| 无码最新| 制服诱惑亚洲一区二区三区在线观看| 亚洲AV无码乱码| 美女高潮视频91| 亚洲成人精品在线一区| 无码欧美有限公司| 97视频免费在线观看| 国产91美女高潮| 亚洲激情视频| 欧美熟女少妇| 99热啪啪| 久久这里只精品| 色爱综合网| 999999精品| 欧美日韩国产中文精品字幕自在自线, | 国产精品一区二区校花| 97国产天堂岛| 国产精品亚洲天堂网址| 九九热在线精品视频| 精品人妻av在线播放| 国产十八禁视频| 人妻日日干| 人妻另类| 天天欧美欧美亚洲网| av黄图片在线观看| 日韩国产十八禁| 色欲蜜臀AV| 天天综合,91入口| 激情99| 国产又猛又粗又爽又黄| 国产精品电影推荐| 天天看,天天做| 久久这里只有精品9| 一区二区首页| 亚洲精品影视老司机| 色噜噜日韩精品| 97视频在线观看播放与子乱对白在线……| 人人操人人摸人人骑| 日韩欧美偷拍美女视频| 亚洲一区二区性爱电影| 69一区二区三区| 99操| 欧美 亚洲 偷拍自拍| 91精片| 久久国语| 长长久久免费视频| 中文字幕高清精品一区| 97超碰人操| 久久久蜜桃一区二区三区| 亚洲一区中文精品| 久久久少妇诱惑精品视频| 亚洲成人av色网| 一级黄色视频网| 国产97视频| 天堂射| 97资源制服丝袜| 自拍视频一区在线观看| 91亚洲综合在线| 亚热日本熟女| 天天流夜夜操| 性色av蜜臀av色欲aV| 蜜臀久久99精品久久久久久-DVD| 亚洲综合影片| 91色婷婷综合久久中文字幕二区| 呦呦一区| 208天天久久九九九| 老熟女区| 激情五月天婷婷| 大香蕉专区| 久久性爱视频免费看| 一二三四区操操Av| 男人的天堂欧美| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 日韩99神马视频片| 狠狠久久亚洲欧美专区| 午夜福利精品| 日韩免费一级性爱视频| 96超碰网| 99re在线视频国产| 婷婷色香| 亚洲一区二区麻豆影院| 亚洲一区二区精品福利| 欧美综合亚洲| 日韩欧美传媒一区国产| av麻豆啪啪| 精品无码一区二区| 色九九综合| 在线视频免费播放一区| 国内毛片热久久思思热| 中文字幕乱亚洲美女精品一区| 青青草玖玖爱| 97色色,97综合| 欧美性色综合网| 熟女丝袜视频| 中文字幕五区| 丁香九月婷婷| 成人丁香五月| 九九综合久久| 粉嫩av在线一区二区| 亚洲av综合色区图片亚洲| 91在线精品一区二区三区| 综合网91| 午夜αv| 91一区二匹| 最近二区三区视频大全| 人妻第一页| 欧美亚洲今日在线| 国产熟女一区二区| 97久操| 国产精品一区在线播放| 亚洲乱熟女一区二区| 欧美色图97| 久久久三区二区一区| 欧美人妻一区二区| 亚洲做性| 91狠狠综合久久| 性91| 欧美成人一级麻豆| 91国产操逼视频| 内射老妇BBWX0C0CK| 日小BB小视频| 亚洲一级性爱视频免费看| 少妇xx精品| 日本一级性爱| 激情网五月天| 男人天堂.AB| 麻豆福利视频导航| 丰满精品人妻少妇久久字幕| 91精品国久久久久久无码| 东京热99999| 在线播放欧洲免费av| 大香蕉中文在线| 日本爽爽爽爽爽爽免费视频|