99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

PHP卡密驗(yàn)證系統(tǒng)設(shè)計(jì):數(shù)據(jù)表、生成算法與后臺(tái)管理實(shí)戰(zhàn)

PHP卡密驗(yàn)證系統(tǒng)設(shè)計(jì):數(shù)據(jù)表、生成算法與后臺(tái)管理實(shí)戰(zhàn) 簡(jiǎn)介這是一套基于PHP開(kāi)發(fā)的卡密驗(yàn)證系統(tǒng)面向需要為在線(xiàn)服務(wù)、游戲或軟件產(chǎn)品搭建激活碼/兌換碼驗(yàn)證機(jī)制的個(gè)人開(kāi)發(fā)者與中小企業(yè)。系統(tǒng)提供完整的前端交互與后臺(tái)管理覆蓋卡密生成與狀態(tài)管理、訂單及支付回調(diào)處理、用戶(hù)權(quán)限管理、銷(xiāo)售統(tǒng)計(jì)等模塊并包含API接口可供二次集成。資源包共451個(gè)文件體積約1.35MB其中包含205個(gè)php核心邏輯文件、68個(gè)html頁(yè)面、34個(gè)js腳本與26個(gè)css樣式以及png/svg圖片和字體等靜態(tài)資源目錄按admin后臺(tái)、data數(shù)據(jù)、extend擴(kuò)展及支付接口等模塊劃分方便定位與維護(hù)已有1872人學(xué)習(xí)下載。通過(guò)部署這套系統(tǒng)可以快速搭建從用戶(hù)購(gòu)買(mǎi)、卡密發(fā)放到驗(yàn)證使用全流程閉環(huán)尤其適合希望快速上線(xiàn)付費(fèi)授權(quán)業(yè)務(wù)的開(kāi)發(fā)者參考或直接使用。無(wú)論是搭建正式授權(quán)平臺(tái)還是學(xué)習(xí)PHP項(xiàng)目架構(gòu)這套卡密系統(tǒng)都具備實(shí)用價(jià)值。1. 一套 PHP 卡密驗(yàn)證系統(tǒng)后臺(tái)功能到底要完善到什么程度很多做獨(dú)立軟件、插件和游戲工具的作者最后都會(huì)遇到授權(quán)問(wèn)題。卡密驗(yàn)證系統(tǒng)是成本最低的方案用戶(hù)填一串卡密客戶(hù)端根據(jù)返回結(jié)果決定是否放行。PHP 在這個(gè)場(chǎng)景里出現(xiàn)頻率最高因?yàn)椴渴痖T(mén)檻低一臺(tái)支持 PHP-FPM 的云主機(jī)加上寶塔面板或虛擬主機(jī)就能把后臺(tái)管理系統(tǒng)跑起來(lái)不需要獨(dú)立構(gòu)建原生服務(wù)。不過(guò)多數(shù)從零手寫(xiě)的卡密系統(tǒng)并不完善。比較常見(jiàn)的是只有一張卡密表一個(gè) ajax 驗(yàn)證接口后臺(tái)只有“查卡密”和“改狀態(tài)”兩個(gè)功能。這種系統(tǒng)的瓶頸不在功能少而在狀態(tài)管理不閉合一碼多用、過(guò)期卡無(wú)法自動(dòng)失效、設(shè)備綁定隨意覆蓋、驗(yàn)證日志缺失用戶(hù)來(lái)投訴時(shí)沒(méi)有任何可追溯的證據(jù)。所以這里要講的不是一份“能跑就行”的腳本而是一套后臺(tái)功能完整的 PHP 卡密驗(yàn)證系統(tǒng)該怎么落地。重點(diǎn)放在數(shù)據(jù)表狀態(tài)機(jī)、驗(yàn)證 API 的并發(fā)安全、后臺(tái)的批量管理和安全加固上。適合正準(zhǔn)備自研授權(quán)系統(tǒng)的開(kāi)發(fā)者也適合接手現(xiàn)有卡密系統(tǒng)后想重構(gòu)后臺(tái)的工程師。2. 卡密系統(tǒng)數(shù)據(jù)模型從狀態(tài)機(jī)到綁定關(guān)系后臺(tái)功能完善的前提是數(shù)據(jù)表結(jié)構(gòu)能支撐所有操作??芟到y(tǒng)的核心表只有三張卡密表、設(shè)備綁定表、驗(yàn)證日志表另外配一張產(chǎn)品類(lèi)型表。很多所謂“功能完善”的后臺(tái)其實(shí)只是把數(shù)據(jù)表字段直接暴露在界面上。2.1 卡密表狀態(tài)機(jī)是業(yè)務(wù)邊界卡密表不是只有一個(gè) status 字段那么簡(jiǎn)單。單獨(dú)看狀態(tài)字段常見(jiàn)取值是 0 未使用、1 已使用、2 作廢、3 凍結(jié)是否真正可用要結(jié)合 expires_at 和 status 一起判斷。這樣設(shè)計(jì)可以避免定時(shí)任務(wù)把過(guò)期卡刷成單獨(dú)狀態(tài)也方便后臺(tái)做“全部有效卡密”查詢(xún)。建表語(yǔ)句如下CREATE TABLE card_keys ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, card_key VARCHAR(32) NOT NULL COMMENT 卡號(hào)對(duì)外字符串, card_code VARCHAR(32) NOT NULL COMMENT 卡密與卡號(hào)組合使用, product_id INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 產(chǎn)品類(lèi)型ID, duration INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 激活后有效天數(shù)0表示永久, bind_device VARCHAR(64) NOT NULL DEFAULT COMMENT 第一個(gè)綁定設(shè)備的SHA256值, status TINYINT NOT NULL DEFAULT 0 COMMENT 0未使用 1已使用 2作廢 3凍結(jié), expires_at INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 到期時(shí)間戳0表示永久, used_at INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 首次激活時(shí)間, created_at INT UNSIGNED NOT NULL, remark VARCHAR(255) NOT NULL DEFAULT , PRIMARY KEY (id), UNIQUE KEY idx_key (card_key), KEY idx_product (product_id), KEY idx_expires (expires_at) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;這里有幾個(gè)關(guān)鍵參數(shù)要說(shuō)明。card_key 對(duì)外唯一業(yè)務(wù)查詢(xún)一律用 card_key 定位card_code 不必全局唯一但驗(yàn)證時(shí)必須和 card_key 一起傳否則相當(dāng)于只有一層防護(hù)。duration 和 expires_at 同時(shí)存在是因?yàn)榧せ顣r(shí)要用 duration 算出最終時(shí)間戳寫(xiě)入 expires_at。如果卡密是渠道商批量采購(gòu)還要額外加 order_id 字段方便溯源。status 字段的狀態(tài)流轉(zhuǎn)要在后端控制不能允許任意跳轉(zhuǎn)。未使用的卡只能在驗(yàn)證接口里變成已使用已使用的卡不能直接改回未使用作廢和凍結(jié)操作后臺(tái)要限制到管理員角色。為了更容易讀懂狀態(tài)判斷邏輯把常用狀態(tài)值列成一張表status含義有效判斷0未使用可激活1已使用expires_at 為 0 或大于當(dāng)前時(shí)間2作廢永遠(yuǎn)不可用3凍結(jié)不可用解凍后恢復(fù)原狀態(tài)2.2 設(shè)備綁定表與驗(yàn)證日志表后臺(tái)審計(jì)的基礎(chǔ)卡密一碼多用是常見(jiàn)糾紛來(lái)源。只用一個(gè) bind_device 字段記錄單設(shè)備不能滿(mǎn)足“同一卡密在 KTV 點(diǎn)歌機(jī)、電腦、手機(jī)之間換綁”的場(chǎng)景。所以我一般會(huì)單獨(dú)建設(shè)備綁定表記錄每個(gè)卡密在所有設(shè)備上的激活歷史CREATE TABLE card_bindings ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, card_id INT UNSIGNED NOT NULL, device_hash CHAR(64) NOT NULL COMMENT 設(shè)備ID的SHA256, created_at INT UNSIGNED NOT NULL, PRIMARY KEY (id), UNIQUE KEY idx_card_device (card_id, device_hash), KEY idx_device (device_hash) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;綁定表允許同一個(gè)卡密對(duì)應(yīng)多個(gè)設(shè)備最大設(shè)備數(shù)由產(chǎn)品類(lèi)型配置決定。驗(yàn)證時(shí)先查這張表如果 device_hash 已存在則放行否則判斷當(dāng)前綁定數(shù)是否到達(dá)上限。注意 device_hash 不能直接存原始設(shè)備號(hào)客戶(hù)端上報(bào)的 MAC、機(jī)器碼、Android ID 都屬于敏感信息存哈希是底線(xiàn)。哈希函數(shù)用 SHA256并且建議在服務(wù)端追加一個(gè)鹽值再算。驗(yàn)證日志表是為了讓后臺(tái)“可查”。每次驗(yàn)證請(qǐng)求至少記錄卡密、設(shè)備、IP、瀏覽器信息、結(jié)果碼和時(shí)間。字段數(shù)量不用太多但必須有聯(lián)合索引覆蓋 card_id 和 created_at否則數(shù)據(jù)量上來(lái)之后后臺(tái)查日志會(huì)慢CREATE TABLE card_verify_logs ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, card_id INT UNSIGNED NOT NULL, action TINYINT NOT NULL COMMENT 1驗(yàn)證 2綁定 3換綁 4續(xù)期, device_hash CHAR(64) NOT NULL, client_ip VARCHAR(45) NOT NULL, user_agent VARCHAR(255) NOT NULL, result TINYINT NOT NULL COMMENT 0成功 1卡密不存在 2已作廢 3已凍結(jié) 4設(shè)備超限 5過(guò)期, created_at INT UNSIGNED NOT NULL, PRIMARY KEY (id), KEY idx_card_time (card_id, created_at), KEY idx_device (device_hash) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;這條日志表的設(shè)計(jì)要注意查詢(xún)后臺(tái)“某卡密的驗(yàn)證記錄”走 idx_card_time查詢(xún)“某設(shè)備有沒(méi)有在其他卡密上出現(xiàn)過(guò)”走 idx_device。如果只記錄成功日志一旦用戶(hù)說(shuō)激活失敗后臺(tái)看不到失敗原因就只能讓用戶(hù)截圖。所以 result 字段要記錄完整結(jié)果碼失敗原因用數(shù)字表示展示層再轉(zhuǎn)換成文案。2.3 產(chǎn)品類(lèi)型與套餐參數(shù)管理卡密驗(yàn)證系統(tǒng)如果不區(qū)分產(chǎn)品類(lèi)型每次發(fā)布新版本都要重新生成一套卡密后臺(tái)管理成本很高。常見(jiàn)做法是加一張 product 表后臺(tái)先建好“基礎(chǔ)版、專(zhuān)業(yè)版、終身版”等產(chǎn)品然后給每個(gè)產(chǎn)品配置默認(rèn)時(shí)長(zhǎng)和設(shè)備綁定數(shù)量CREATE TABLE card_products ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, product_name VARCHAR(50) NOT NULL, default_duration INT UNSIGNED NOT NULL DEFAULT 30, max_bindings TINYINT UNSIGNED NOT NULL DEFAULT 1, price DECIMAL(10,2) NOT NULL DEFAULT 0, is_active TINYINT NOT NULL DEFAULT 1, created_at INT UNSIGNED NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;后臺(tái)對(duì)產(chǎn)品的增刪改查本質(zhì)上就是對(duì)這個(gè)表的操作。需要注意 product_id 在卡密表里加了索引所以產(chǎn)品表可以隨便改不會(huì)影響驗(yàn)證速度。每次生成的卡密把 duration 和 max_bindings 快照到卡密記錄里而不是生成時(shí)去聯(lián)查產(chǎn)品表否則管理員后來(lái)改套餐時(shí)長(zhǎng)已售出的卡密到期時(shí)間就全變了。這個(gè)“生成時(shí)快照”的習(xí)慣是后臺(tái)功能完善的隱藏要求。3. 用 PHP 寫(xiě)卡密生成算法和驗(yàn)證 API可直接落地的代碼這一章給出最小可用實(shí)現(xiàn)。生成算法負(fù)責(zé)產(chǎn)出不可枚舉的卡密驗(yàn)證 API 負(fù)責(zé)在并發(fā)環(huán)境下安全地完成激活、綁定和續(xù)期。代碼基于 PHP 8依賴(lài) PDO 連接 MySQL 或 MariaDB。3.1 卡密生成算法隨機(jī)性、去重與防枚舉卡密生成不能直接用 uniqid() 或 mt_rand() 拼字符串前者有時(shí)間前綴后者不夠安全。推薦隨機(jī)源是 random_int() 或者 random_bytes()再通過(guò) base62 字符表去掉易混淆字符。一個(gè)可復(fù)用的生成函數(shù)如下function base62_encode(int $len 16): string { $chars ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789; $result ; for ($i 0; $i $len; $i) { $result . $chars[random_int(0, strlen($chars) - 1)]; } return $result; }這個(gè)函數(shù)特意去掉了 0、O、1、I避免用戶(hù)看著像又輸不對(duì)。random_int() 在 PHP 7 之后使用操作系統(tǒng)的 CSPRNG安全強(qiáng)度可以滿(mǎn)足激活碼場(chǎng)景??芪粩?shù)要根據(jù)業(yè)務(wù)量選擇16 位 base62 大約提供 95 bit 熵配合數(shù)據(jù)庫(kù)唯一索引枚舉成本極高如果只是臨時(shí)給幾百個(gè)用戶(hù)用12 位也夠。位數(shù)和熵的關(guān)系如下長(zhǎng)度熵估算建議場(chǎng)景10 位59 bit內(nèi)部測(cè)試12 位71 bit幾千用戶(hù)的小軟件16 位95 bit公開(kāi)渠道大量分發(fā)批量生成時(shí)還要考慮重復(fù)問(wèn)題。雖然碰撞概率極低但為了可靠我一般會(huì)在插入前用 do-while 查一次 card_key 是否存在然后讓數(shù)據(jù)庫(kù)唯一索引兜底function batch_create_cards(int $productId, int $count, int $days): array { $pdo get_pdo(); $stmt $pdo-prepare( INSERT INTO card_keys (card_key, card_code, product_id, duration, expires_at, created_at) VALUES (:key, :code, :pid, :days, :expires, :now) ); $cards []; $now time(); for ($i 0; $i $count; $i) { do { $key base62_encode(16); $code base62_encode(12); $exists $pdo-prepare(SELECT id FROM card_keys WHERE card_key :key); $exists-execute([:key $key]); } while ($exists-fetch()); $expiresAt $days 0 ? $now $days * 86400 : 0; $stmt-execute([ :key $key, :code $code, :pid $productId, :days $days, :expires $expiresAt, :now $now ]); $cards[] [card_key $key, card_code $code]; } return $cards; }這段代碼里有一處性能細(xì)節(jié)每次循環(huán)都 prepare 一次 SELECT 和一次 INSERT對(duì)于幾千張卡來(lái)說(shuō)沒(méi)問(wèn)題如果一次生成十萬(wàn)張要改成用 INSERT ... VALUES 批量拼接并讓數(shù)據(jù)庫(kù)唯一索引解決重復(fù)程序里去掉 do-while。另外批量生成的卡密應(yīng)該在后臺(tái)以文件形式下載不要把卡密直接顯示在后臺(tái)頁(yè)面上防止瀏覽器緩存泄露。3.2 驗(yàn)證 API狀態(tài)流轉(zhuǎn)、設(shè)備綁定與錯(cuò)誤碼驗(yàn)證接口是整個(gè)卡密系統(tǒng)的咽喉必須在一個(gè)數(shù)據(jù)庫(kù)事務(wù)里完成“讀狀態(tài)、寫(xiě)狀態(tài)”兩個(gè)動(dòng)作。如果先用 SELECT 查到卡密再在應(yīng)用層判斷之后 UPDATE兩個(gè)請(qǐng)求同時(shí)進(jìn)來(lái)時(shí)可能都讀到“未使用”導(dǎo)致一卡多發(fā)。解決辦法是在事務(wù)里使用 SELECT ... FOR UPDATE 鎖住行function verify_card(string $cardKey, string $cardCode, string $deviceId, int $productId): array { $pdo get_pdo(); $pdo-beginTransaction(); $stmt $pdo-prepare( SELECT * FROM card_keys WHERE card_key :key AND card_code :code AND product_id :pid FOR UPDATE ); $stmt-execute([:key $cardKey, :code $cardCode, :pid $productId]); $card $stmt-fetch(); if (!$card) { $pdo-rollBack(); return [code 1, msg 卡密不存在]; } $now time(); if ($card[status] 2 || $card[status] 3) { $pdo-rollBack(); return [code 3, msg 卡密已被作廢或凍結(jié)]; } if ($card[status] 1) { $pdo-rollBack(); if ($card[expires_at] 0 $now $card[expires_at]) { return [code 5, msg 卡密已過(guò)期]; } return [code 0, msg 驗(yàn)證成功, expires_at $card[expires_at]]; } // 未使用檢查設(shè)備綁定數(shù)量 $deviceHash hash(sha256, $deviceId . SALT); $bindCountStmt $pdo-prepare( SELECT COUNT(*) FROM card_bindings WHERE card_id :id ); $bindCountStmt-execute([:id $card[id]]); $bindCount (int)$bindCountStmt-fetchColumn(); if ($bindCount (int)$card[max_bindings]) { $pdo-rollBack(); return [code 4, msg 設(shè)備綁定數(shù)量已達(dá)上限]; } $expiresAt $card[duration] 0 ? $now $card[duration] * 86400 : 0; $updateStmt $pdo-prepare( UPDATE card_keys SET status 1, bind_device :dev, expires_at :exp, used_at :used WHERE id :id AND status 0 ); $updateStmt-execute([ :dev $deviceHash, :exp $expiresAt, :used $now, :id $card[id] ]); $bindStmt $pdo-prepare( INSERT INTO card_bindings (card_id, device_hash, created_at) VALUES (:id, :dev, :now) ); $bindStmt-execute([:id $card[id], :dev $deviceHash, :now $now]); $pdo-commit(); return [code 0, msg 激活成功, expires_at $expiresAt]; }代碼里有幾個(gè)參數(shù)需要注意。FOR UPDATE 必須和 beginTransaction 配合使用否則鎖在當(dāng)前連接上是自動(dòng)提交的等于沒(méi)鎖。UPDATE 語(yǔ)句里的 WHERE status 0 是第二道保險(xiǎn)即使前面的 SELECT 因?yàn)楦綦x級(jí)別讀到舊數(shù)據(jù)UPDATE 行數(shù)影響為 0 時(shí)也能識(shí)別出已經(jīng)被并發(fā)激活。設(shè)備哈希的鹽值 SALT 要放在配置文件里不能寫(xiě)到公共 PHP 文件名中。錯(cuò)誤碼要設(shè)計(jì)成“業(yè)務(wù)碼 HTTP 狀態(tài)碼”分離的形式。為了讓客戶(hù)端和后臺(tái)日志都能看懂業(yè)務(wù)碼從 0 開(kāi)始遞增0 成功、1 卡密不存在、2 卡密重復(fù)使用、3 作廢或凍結(jié)、4 設(shè)備超限、5 過(guò)期。返回 JSON 時(shí)可以帶上 HTTP 200業(yè)務(wù)碼由客戶(hù)端判斷也可以讓非 0 結(jié)果返回 HTTP 401但那樣接入其他語(yǔ)言會(huì)多一層判斷。提示在 UPDATE 和 INSERT 之后如果執(zhí)行過(guò)程中拋出異常記得調(diào)用 rollBack否則 PHP 腳本退出前連接會(huì)一直占著事務(wù)鎖影響其他驗(yàn)證請(qǐng)求。3.3 簽名防刷與參數(shù)校驗(yàn)驗(yàn)證接口如果只接收 card_key 和 card_code最大的風(fēng)險(xiǎn)是被人用固定卡密來(lái)回調(diào)嘗試批量綁定或探測(cè)有效卡密。常見(jiàn)的防護(hù)方式是在參數(shù)里增加 timestamp 和 sign。sign 的生成規(guī)則放在客戶(hù)端和服務(wù)端各自維護(hù)一份function check_signature(array $params, string $secret): bool { $sign $params[sign] ?? ; unset($params[sign]); ksort($params); $raw urldecode(http_build_query($params)) . $secret; $expected md5($raw); return hash_equals($expected, $sign); }簽名參數(shù)說(shuō)明如下timestamp 必須是 Unix 時(shí)間戳服務(wù)端檢查與當(dāng)前時(shí)間差不超過(guò) 300 秒防止重放。sign 計(jì)算順序是去掉 sign 后按參數(shù)名字典排序拼成 query string 后追加 secret再計(jì)算 md5。md5 不用于防碰撞只是防篡改所以足夠。拿到客戶(hù)端傳來(lái)的 salt 或者設(shè)備號(hào)時(shí)要判斷類(lèi)型避免把數(shù)組傳進(jìn)來(lái)的異常。如果前端是瀏覽器還會(huì)遇到 PHP 跨域問(wèn)題響應(yīng)頭加 Access-Control-Allow-Origin 之外還需要把回調(diào)方法限制成白名單不能直接使用 jsonp 拼接任意回調(diào)名。4. 后臺(tái)管理系統(tǒng)卡密生成、導(dǎo)入導(dǎo)出、日志統(tǒng)計(jì)與安全加固后臺(tái)本身也是一個(gè) Web 應(yīng)用常見(jiàn)做法是用 PHP 模板渲染頁(yè)面或者用 Vue3 后臺(tái)管理系統(tǒng)做前端、PHP 提供 API。不管哪種方式核心功能都集中在四塊登錄鑒權(quán)、卡密管理、批量導(dǎo)入導(dǎo)出、日志統(tǒng)計(jì)。4.1 后臺(tái)登錄會(huì)話(huà)、驗(yàn)證碼與越權(quán)防護(hù)后臺(tái)管理員表至少要包含 id、username、password_hash、role、last_login_at。密碼用 password_hash() 保存登錄驗(yàn)證用 password_verify()。PHP 7.4 之后默認(rèn)使用 bcrypt寶塔面板默認(rèn) PHP 環(huán)境可以直接用不需要額外裝擴(kuò)展。為了防暴力破解登錄接口要加驗(yàn)證碼和失敗次數(shù)限制我傾向于在 Session 中記錄連續(xù)失敗次數(shù)超過(guò) 5 次鎖定 15 分鐘session_start(); if ($_SESSION[login_fails] 5 time() - $_SESSION[fails_ts] 900) { exit(嘗試次數(shù)過(guò)多請(qǐng)稍后再試); } if (!check_captcha($_POST[captcha])) { $_SESSION[login_fails]; exit(驗(yàn)證碼錯(cuò)誤); }驗(yàn)證碼可以用 GD 庫(kù)畫(huà)一個(gè) 4 位字符串也可以使用現(xiàn)成庫(kù)。如果后臺(tái)入口在寶塔上部署記得確認(rèn) PHP 已啟用 gd 擴(kuò)展否則驗(yàn)證碼頁(yè)面一片空白。權(quán)限控制不能只靠登錄態(tài)每個(gè)管理操作都要檢查當(dāng)前用戶(hù)的 role最常被忽略的是“普通管理員不能凍結(jié)卡密、不能刪除日志”這類(lèi)垂直權(quán)限后臺(tái)菜單隱藏了入口但 API 端點(diǎn)還要再判斷一次。后臺(tái) Session 的 cookie 建議設(shè)置 HttpOnly、SameSiteLax避免被 XSS 拿走會(huì)話(huà)。如果做了前后端分離還需要為后臺(tái)接口單獨(dú)發(fā)一個(gè)短時(shí)效 Token不要直接用用戶(hù)密碼哈希做簽名。4.2 卡密管理批量生成、CSV 導(dǎo)入和導(dǎo)出后臺(tái)卡密管理頁(yè)面至少要支持按卡號(hào)/卡密/狀態(tài)搜索、批量生成、作廢、凍結(jié)、續(xù)期、導(dǎo)出 CSV。批量生成的界面要提供產(chǎn)品類(lèi)型下拉框、生成數(shù)量和有效天數(shù)提交后調(diào)用第 3 章的 batch_create_cards 函數(shù)。生成結(jié)果要以 CSV 文件下載文件內(nèi)容只有 card_key,card_code 兩列方便直接發(fā)給渠道方header(Content-Type: text/csv; charsetutf-8); header(Content-Disposition: attachment; filenamecards.csv); $out fopen(php://output, w); fputcsv($out, [card_key, card_code]); foreach ($cards as $card) { fputcsv($out, $card); } fclose($out);除了自己生成很多團(tuán)隊(duì)會(huì)從第三方卡商采購(gòu)卡密這時(shí)候后臺(tái)要支持 CSV 導(dǎo)入。導(dǎo)入文件的模板和導(dǎo)出保持一致列順序必須是 card_key,card_code,duration默認(rèn)時(shí)長(zhǎng)可以留空使用產(chǎn)品類(lèi)型默認(rèn)值。解析時(shí)要注意去重卡號(hào)重復(fù)的行跳過(guò)并記錄錯(cuò)誤行號(hào)整個(gè)文件導(dǎo)入完成后顯示成功和失敗統(tǒng)計(jì)。我一般建議先做 dry-run把預(yù)覽結(jié)果給管理員確認(rèn)后再真正寫(xiě)入避免導(dǎo)入一條格式錯(cuò)誤的記錄導(dǎo)致整批卡密作廢。4.3 日志統(tǒng)計(jì)與后臺(tái)審計(jì)后臺(tái)的“完善”很大程度體現(xiàn)在數(shù)據(jù)展示上。驗(yàn)證日志頁(yè)要能按時(shí)間范圍、結(jié)果碼、卡號(hào)、設(shè)備哈希篩選列表字段包括卡號(hào)、產(chǎn)品名、結(jié)果、IP、設(shè)備哈希、訪(fǎng)問(wèn)時(shí)間。統(tǒng)計(jì)頁(yè)常用兩個(gè) SQL一個(gè)是每日激活趨勢(shì)SELECT FROM_UNIXTIME(used_at, %Y-%m-%d) AS day, COUNT(*) AS active_count FROM card_keys WHERE status 1 GROUP BY day ORDER BY day DESC LIMIT 30;另一個(gè)是按產(chǎn)品分組的激活占比SELECT p.product_name, COUNT(c.id) AS total, SUM(CASE WHEN c.status 1 THEN 1 ELSE 0 END) AS used FROM card_keys c LEFT JOIN card_products p ON c.product_id p.id GROUP BY c.product_id;日志表會(huì)快速增長(zhǎng)后臺(tái)要提供自動(dòng)清理策略。常見(jiàn)做法是保留最近 90 天每天凌晨執(zhí)行 DELETE或者把超過(guò) 90 天的日志導(dǎo)入備份表。清理任務(wù)放在 cron 里寫(xiě)成 Shell 腳本調(diào)用 PHP 命令比較常見(jiàn)但注意不要用寶塔默認(rèn)的每分鐘執(zhí)行改成每天一次避免對(duì)主庫(kù)造成不必要的壓力。5. 卡密系統(tǒng)的高階技巧與排錯(cuò)最后這部分說(shuō)三個(gè)真正影響生產(chǎn)的問(wèn)題離線(xiàn)驗(yàn)證怎么設(shè)計(jì)、性能瓶頸怎么處理、接手老系統(tǒng)時(shí)從哪里開(kāi)始查。5.1 離線(xiàn)驗(yàn)證與在線(xiàn)驗(yàn)證的取舍在線(xiàn)驗(yàn)證要求客戶(hù)端每次啟動(dòng)都聯(lián)網(wǎng)卡密系統(tǒng)能實(shí)時(shí)凍結(jié)但對(duì)單機(jī)軟件不友好。常見(jiàn)做法是首次激活聯(lián)網(wǎng)之后保存一份服務(wù)端簽名的授權(quán)文件。服務(wù)端用 RSA 私鑰對(duì)卡密、到期時(shí)間、設(shè)備哈希簽名客戶(hù)端內(nèi)嵌公鑰驗(yàn)證。這樣即使不聯(lián)網(wǎng)也能判斷有效期。要注意授權(quán)文件里必須包含綁定設(shè)備哈希否則用戶(hù)把授權(quán)文件復(fù)制到另一臺(tái)機(jī)器也能通過(guò)驗(yàn)證。RSA 簽名不需要每次請(qǐng)求后臺(tái)所以對(duì) PHP 服務(wù)的壓力很小。5.2 性能優(yōu)化緩存、鎖與隊(duì)列驗(yàn)證接口如果被高頻調(diào)用數(shù)據(jù)庫(kù)行鎖會(huì)成為瓶頸??軤顟B(tài)變化不頻繁可以在 Redis 里緩存 status 和 expires_at緩存過(guò)期時(shí)間設(shè)置 60 秒。但激活寫(xiě)路徑必須走數(shù)據(jù)庫(kù)不能跳過(guò) FOR UPDATE。如果日志寫(xiě)入影響主流程性能把 card_verify_logs 的插入放進(jìn) Redis 隊(duì)列由后臺(tái)腳本異步寫(xiě)庫(kù)查詢(xún)?nèi)罩緯r(shí)接受幾秒延遲這樣驗(yàn)證接口的耗時(shí)能控制在 20ms 以?xún)?nèi)。5.3 排錯(cuò)與代碼審計(jì)接手別人留下的卡密系統(tǒng)時(shí)第一件事不是看后臺(tái)界面而是做代碼審計(jì)。重點(diǎn)看三處驗(yàn)證接口有沒(méi)有在做狀態(tài)判斷前更新數(shù)據(jù)庫(kù)、是否用了事務(wù)和行鎖、錯(cuò)誤碼是否正確。常見(jiàn)坑是 PHP 7.0 升級(jí)后 mcrypt 相關(guān)的代碼報(bào)錯(cuò)之前用 mcrypt 加密設(shè)備號(hào)的方案要換成正向哈希。另一個(gè)高發(fā)問(wèn)題是時(shí)區(qū)PHP 的 date_default_timezone_set 和 MySQL 連接時(shí)區(qū)不一致會(huì)導(dǎo)致歸檔的卡密提前過(guò)期。后臺(tái)導(dǎo)出 CSV 時(shí)如果發(fā)現(xiàn)中文亂碼要在輸出前加入 UTF-8 BOM。日志表如果查詢(xún)緩慢先看有沒(méi)有 idx_card_time數(shù)據(jù)量千萬(wàn)級(jí)時(shí)按月份做分區(qū)表比加索引更有效。這些點(diǎn)查完卡密驗(yàn)證系統(tǒng)的正確性和后臺(tái)可用性基本就立住了。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色婷婷六月综合| 五月婷无码| 99免费在线视频| 五月激情另类| 丁香五月激情网| 五月激情偷拍| 婷婷五月天免费视频| 成人午夜免费电影| 五月丁香啪| 麻豆WWWCOM内射软件| 精品无码99| 五月天丁香婷| 丁香五月手机视频| 99热国产在线| 亚洲精品无码一区二区| 色婷婷五月色| 狠狠色五月| 婷婷五月天99| 婷婷丁香五月激情图片| 激情综合婷婷五月| 天天日日夜夜爽| 青青草青青草五月天| 99re热在线视频观看| 伊人网欧美在线男人天堂五月丁香| 99噜噜噜在线播放| 激情丁香五月| 色啪网| 人人爱国产| 婷婷激情五月天综合| 免费观看高清无码| 热婷婷av| 丁香五月激情五月| 99色热综合| 丁香五月天激情视频| 亚洲国产99| 亚洲第一色色色色| 亚洲五月天综合| 五月丁香婷婷色| 1769在线观看欧美国产| 9久热在线精品| 国产精品日本一区二区在线播放| 在线观看免费视频| 九九草草逼| 五月天开心网| 乱岳熟女50岁| 人妻无码视频网| 深爱五月婷婷| 婷婷99狠狠躁天天久久久九九九| 五月天欧美 另类小说| Www.狠狠| 久久色五月| 天天综合五月| 超碰免费人人| 国产夫妻操逼内射视频| 亚洲丁香五月天在线视频| 99碰超| 婷婷丁香综合| 九九99九九99偷拍视频免费看| 婷婷香蕉视频| 综激情网| 99热国产国产| 丁香 婷婷 亚洲 熟女| 99精品在线下载| 色国产五月| 色播五月婷婷综合| 韩国三级五月天婷婷。| 超碰猛烈的性猛交| 亚洲欧美婷婷五月色综合| 91九色|疯狂|高潮|对白|| 26uuu成人网| 五月六月丁香激情| 91久操| 91日本在线观看| 色婷婷19| 熟女人妻视频| 99免费青青蜜臀| 色综合久久88色综合天天| 中文字幕成人版| 亚洲殴洲精品Av在线| 黄色av网站在线免费播放| 桃色五月婷婷| 六月久久婷婷| 五月天伊人日日噜影片AV| 天天射天天射一道本日本社区| 丁香婷婷在线| 玖玖热视频| 色欲天天综合网| 日本猛少妇色XXXXX猛叫| 久久婷婷九月国产精品| 97香蕉久久超级碰碰高清版| 九九一综合精品| 狠狠久综合| 色婷婷五月天视频在线| 婷婷午夜| 九月婷婷激情久久| 欧美性二区| 天干天天干天天天天天| 久久婷婷五月天激情| www.婷婷,com| 色五月丁香91| 9九热视频| 婷婷五月天影视网址| 婷婷激情六月天视频| 丁五月激情视频免费| 亚洲成人网站在线观看| 激情五月天99色| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 天天肏在线观看| 色色色视频免费无码| 天天摸天天日天天舔| 99操免费视频| yw国产AV| 五月视频日本免费观看| 涩五月婷婷| 国产婷婷色综合AV蜜臀AV| 欧美超碰亚洲| 国产精品蜜臀99| 天天搡日日搡aaaaⅩ| 97超碰婷婷五月天| 亚洲成人色五月婷婷综合| 99成人小视频| 国产精产国品一二三在观看| 最新热中文字幕| 亚洲综合丁香五月天| 婷婷狠狠干| 婷婷大香焦| 精品久久久999| 五月情涩综合婷婷| 久久黄色免费视频| 九九99久久| www.cao.com久久| 久鲁鲁色网| 狠狠操狠狠| 乱精品一区字幕二区| jiujiujiuwuyuetian| 五月天婷婷影院影院| 成人免费在线电影| cao久久| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 色五月大| 婷婷五月天久久综合88| 婷婷激情综合| 爆乳熟女一区二区三区爆乳| 99热精品免费| 久re热视频| av人人操| 激情碰碰碰| 2025最新亚洲激情在线| 99热热热99精品婷婷| 婷婷欧美偷拍综合| 丰满少妇猛烈A片免费看观看| 97AV在线视频| 99亚州综合精品成人网| 九九九这里只有精品| 色色色地址| 影音先锋五月天婷婷丁香在线观看| 最新精品视频99| 九九热精品视频在线观看| 久久九色| 成年人丁香五月| 精品99在线| 男女免费视频999| 婷婷五月综合网激情| 久久久久久综合五月婷婷| 激情视频网址| 色五月婷婷开心| 乱乱av| 人人色性网| 五月天激情小说| 色婷视频| 无码免费人妻A片AAA毛片西瓜| 99re熱| 九九99免费理论| 五月婷婷,狠狠操| 色九月欧美| 精品久久久999| 伊人www22综合色| 五月激情网站| 九九热视频首页/这里只有精品| 五月丁香啪啪| 婷婷综合色| 99精品在线| 亚洲av无码精品色午夜| 欧美人妻一区二区| 插插五月天| 亚洲精品**不卡在线播he| 开心五月婷婷在线| 婷婷中文无码| 激情AV网| 国产综合婷婷| 狠狠操天天操天天操| 欧美成人AAA片一区国产精品| 五月天激情视频五月天| 九色视频91| 婷婷五月丁香五月| 婷婷八月丁香激情综合| 99热99热在线观看| 五月天综合久久丁香91| 色五月激情五月| 婷婷五月天免费视频| 丁香色综合| 精品一区二区三区四区五区六区| 99综合| 桃色五月婷婷| 日韩在线观看亚洲| 激情综合文学| 亚洲熟妇AV乱码在线观看| 五月网网站| 九月影院義母在线播放| 久热伊人在91| 老美AA片| 婷婷色影院| 99re思思热久久| 日韩另类| 五月天丁香婷婷社区| 久久精品性爱| 丝袜激情网| 99精品视频在线| 五月婷婷日| 思思热在线| 天天插插天天| 激情婷婷五月天在线观看| 成人在线网站| 影音先锋综合网| 久久hd| 热99热| 91干在线视频| 亚洲激情四射色| www.jiujiujiu| 五月丁花色综合网| 99热欧| 欧美性交一区二区三区| 大香蕉综合视频在线| 天堂久久婷婷| 五月丁香啪啪综合| 六月婷婷国产| 丁香五月在线观看综合| wWw色五月| 五月狠狠| 97操男人的天堂| JAPANRCEP老熟妇乱子伦视频| 丁香五月AV| 婷婷六月丁香色| 操碰91| 一级黄色操B| 欧美成人AAA片一区国产精品| 五月天成人在线播放| 婷婷五月永远18免费久久久| 精品久久二6| 五月婷婷日本| 精品久久66| 色婷婷丁香| 婷婷丁香五月天熟女丝袜| 色五月亚洲| 另类精品视频在线观看| 欧美日本国产欧美日本韩国99| 色综合色欲综合天天免费| 性色综合网| 亚洲精品第一国产综合亚AV| 熟女色色一区二区| 久久久久久久久月丁| 国产激情视频在线观看| 激情第四色| 五月婷婷激情久久| 久久综合婷婷五月| 在线网黄| 婷婷大香蕉| 中文在线成人| 96精品久久久久久久久| 婷婷丁香人妻天天爽| 婷婷在线视频| 成人短视频在线| 婷婷五月色| 99色亚洲| 亚洲无码www| 高清 码 免费看片短视频| www.com任你艹| 九月丁香欧美综合| 超碰99久久| 丁香五月综合激情性爱| 99在线观看视频免费| 99re热视频这里只有综合亚洲| 色久女| 99免费在线视频| 激情丁香五月天图片| 色色色宗合网| 超碰色女人| 亚洲AV第二区国产精品| 99色天堂| 久久99热这里| 狠狠操狠狠做| www.久久综合| 婷婷99狠狠| 五月丁香| 美女被操一区二区| 九九九色综合| 亚洲色情激情丁香五月| 老司机日日夜夜青草| 99热精品无码| 色五月天电影| 婷婷丁香六月天激情四射网| 久久大香蕉同僚| 殴美激情综合网| 五月色网| 综合久久人妻| 色婷婷丁香五月| 国产无遮挡又黄又爽免费网站| 色欧美色色色| 五月丁香久人妻中文| 五月天婷婷av| 日韩色色视频www| 色五月婷婷五月天| 婷婷中文字幕网站| 色五月婷婷中文字幕在线观看| 日韩99色| 久热91精品| 久久婷婷精品| 欧美亚洲成人在线| 这里只有精品视频看看| 六月婷婷激情| 色五月天 丁香| 五月婷啪| 五月丁香六月婷婷操操操| 九九色婷婷| 激情都市另类| 狠狠搞五月天| 天天搞天天色综合| 午夜AV网| 婷婷五月天亚洲天堂| 色色射| 性爱视频久久| 久久久网站| 91人妻视频| 另类图片激情五月| 天花AV无码| 99er免费在线观看| 黄色片区子| 亚洲综合色婷婷文学| 久久HD| 欧美综合激情五月天| 久久婷婷五月综合激情国产| 日夜夜久久| 亚洲精品亚洲人成人网| 丁香视频| 色婷婷五月天视频在线| 婷婷五月综合性爱| 色五月av伊人| 在线理论片| 9久国产精品| 激情五月天www| 99爱视频在线观看这里只有精品| 91免费看片| 操一操插一插| AAA级久久久精品| 99热99色| 97热精品| 婷婷精品在线| 九九re精品视频在线观看| 一本色道久久综合狠狠躁一二三| 色。 日日日| 99色在线视频| 九九热av| 国产成人+综合亚洲+天堂| jiuse91在线| 人妻操在线看| 超碰婷婷色| 欧日韩AV| 日韩AV在线影片| 六月丁香五月激情亚洲AV| 色婷婷五月天成人网| 五月婷久久综合| 天天谢天天操| 色无婷婷| 伊人五月成人| 五月激情久久| 99A片| 婷婷94s| 色偷偷狠狠| 九九九九九九九九九九九九九九九九九九九在线视频 | 玖玖婷婷色| 五月天社区狠狠| 成人AV片播放| 99这里只有| 99资源人人| 538在线精品| 国产精品久久久99视频| 亚洲国产精品VA在线看黑人| 五月丁香做爱视频| 亚洲免费av在线| 五月停停999| 五月综合激情| 99综合| 青青草婷婷综合五月| 色欲AVV| 色狠狠色噜噜AV天堂五区消防| 久久ri精品视频| 五月婷婷丁香在线| 精品99在线| 色色五月婷| 性爱先锋AV| 久久性爱视频| 丁香六月激情国产| 婷婷免费无马| 9久热精品在线视频| 美女主播野战视步页| 五月丁香久久激情综合| 激情五月婷| 97干在线视频| 开心五月深爱五月婷| 色综合女人99| 亚洲免费婷婷| 欧美色色色| 香蕉色色网| www.zbzhongsen.com| 九九这里只这里只有精品| 丁香性爱在线视频| 91婷婷色五月| 这里只有精品99www| 99re视频在线| 深爱五月激情| 天天插天天日| 综合在线丁香五月| 五月天天堂久久| 九九色影院| 欧美丁香婷婷五月天| av在线免费播放| 五月天色色无码| 丁香五月天堂网| 五月丁香色婷婷婷基地| 亚洲视频在线网| 狠狠插狠狠操| 色婷婷亚洲婷婷在线观看| 亚洲精品视频在线| 亚洲 欧洲 国产 伦综合| 99热免| 五月天婷婷综合免费| 国产亚洲99| 任你干线上免费视频有3吗| 91久久婷婷| 秋霞三及片| 精品国产va久久久久| 欧美色必爱| 国产一级片| 伊人网色婷婷五月天| 99精品一二三四视频| 五婷婷综合网| 午夜不卡久久精品无码免费| 色综合色色色| 99热免费精品| 久久久这里有精品| 激情网五月婷婷| 婷婷亚洲丁香五月| 六月丁香视频网站| 色婷婷综合久久久久| 丁香婷婷浪潮AV久久综合| 久99久视频| 97中文在线| 六月天婷婷| 开心五月色婷| 五月色欧洲| 亚洲五月天,激情视频| 99热加勒比| 色五月噜噜| 欧美大片| 97精品人人A片免费看| 欧美大香蕉视频| 五月天天天天天天天天天天天婷婷婷| 激情小说五月欧美亚洲丁香| 久久这里只有精品网| 亚洲国产婷婷色五月 | 亚州综合色| 伊人激情综合| 68热超碰在线| a片在线免费观看一区| 日韩无码AV电影网站| 婷婷五月丁香五月| 人妻内射一区二区在线视频| 北京熟妇搡BBBB搡BBBB| 综合狠久久| 狠狠操狠狠色| 991自拍视频| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 99热这里只有精品首页| 99热久久这里只有精品| 色一情一乱一伦一区二区三区| 五月婷婷之综合激情| 久久综合激情| 色色综合网站| 五月婷婷婷色| 99热99在线精品| 思思色综合网站| 色五月涩涩婷婷蜜桃| 色婷婷五月天中文字幕| 丁香五月丁香伊人| 第四色婷婷丁香五月| 国产高清精品色| 26uuu亚洲欧美| 五月天婷婷丁香社区| 色99网| 99热8| 五月婷婷啪啪综合网| 五月天婷婷社区| 婷婷激情视频| 五月婷婷影院| 亚洲免费成人电影AV| 禁片二区| 日韩成人无码人妻| 激情五月婷婷网在线观看| 思思热在线视频99| 日本99色| 丁香五月欧美| 成人AV播放| 国产小网站| 婷五月天天| 久久这里只有精品16| 欧美成人A片AAA片在线播放| 久久总和99| 天天插天天射| 丁香五月激情欧美| 开心五月激情| 婷婷五月天激情在线| 激情九色| 色婷婷亚洲婷婷| 抽插特写| 色狠狠狠干| 综合五月激情| 九九色婷婷| 国产欧美大香蕉一区| 大香蕉久热| 九九99视频精品| 天天做天天爱天天要| 中文字幕,综合,91| 九九视频在线观看视频6 | Av在线资源| 超碰人人在线| 色五月人妻| 色色色色网| 婷婷五月精品| 天天插综合在线| 婷婷五月天欧美| 强伦轩人妻一区二区电影| 狠狠色噜噜色狠狠狠综合色 | 干一干xxxx| 国产美女无遮挡裸体毛片A片| 激情綜合網址| 婷婷五点亚洲| 婷婷五月成人| 亚洲操逼片| 色情五月婷婷| 五月停视频天堂| 色五月天.con| 天天做天天爱天天高潮| 综合网精品99| 婷婷六月天亚州| 五月丁香综合激情网| 免费观看2018www黄色操逼网站| 婷婷五月综合色中文字幕| 九九99香蕉在线视频播放| 色狠狠色噜噜AV天堂五区| 日本美女上人| 婷婷在线视频| 色婷婷色和| 婷婷五月天日本无码| 亚洲人人操| 综合色色网| 日本色综合| 久久人视频| 伊人久久五月天| 思思热在线视频精品| 99久.| 婷婷免费视频| 五月丁香啪。| 五月丁香综合在线| 九九九九中文字幕| 色五月丁香六月婷婷| 综合色色五月| 久热a| 亚洲妇女熟BBW| 97资源碰碰在线| 久久金品黃色| 激情久久 婷婷| 99色爱| 丁香狠狠色婷婷久久无码视频| 麻豆科斗777| 五月天堂在线| 九九热99久久99| 欧美成人精品老美女噜噜噜| 丁香97综合| 色吧五月婷婷| 最新AV在线观看| 一区二区免费看| 久9热视频| 成人网在线视频| 欧美久久网| 国产五月天欧美色| 4399在线日本A片| 亚洲综合色色| 五月天婷婷黄色视频| 99热婷婷| 婷婷五月天偷拍| 99精品九九| 日本社区五月天激情| 婷婷五月综合免费在线| 99九九视频| 91超碰在线观看| 久久怕怕视频| 五月婷在线色视频| 啪啪操超碰| 在线成人网站| 91热er| 97色五月婷婷在线| 91视频一起草| 婷婷激情综合无月| 一区二区乱视频码| 级情九色| 天天色天天色天天色天天色天天色| 久久密臀婷婷| 综激情网| 就爱干 在线| 久久九⑨| 激情AV| 人人做天天爱| 久久激情五月婷婷| 婷婷激情久久| 五月丁香久久网| 婷婷亚洲五| 99久久婷婷精品视频| 色色免费网站| 热久久视频99| 欧美熟女99| 香蕉AV777XXX色综合一区| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 深爱五月亚洲| 久久婷婷成人| 91伦| 99色综合| 97干视频在线| 五月婷婷黄色视频| 日韩啪啪网| www超碰com| 丁香五月婷婷影院| 六月丁香婷婷五月| 日本va网站| AV成人在线播放| 四虎国产精品永久在线国在线| 啪啪色区| 五月婷婷在线观看| 久久婷婷激情五月天一区二区| 伊人免费视频9| 26uuu国产| 天天日天天爽夜夜爽| 日本a片网址| 大香蕉伊在| 俺来也狠狠| 91综合在线| 天天久| 婷婷日| 狠狠综合| 天堂久久婷婷| 91色欲综合| 久久久国产精品黄毛片| 激情五月激情综合网| 五月婷视频| 翔田千里无码| 六月婷婷深深爱| 92久久| 婷婷五月丁香综合桃花色网| 91久久精品国产91性色TV| 爆乳熟妇一区二区三区爆乳照片| 欧洲色| www.开心激情| 99 这里只有精品| 天天爽天天日人人爱| 丁香五月综合婷婷| 97性视频| 五月亭亭欧美女人| 婷婷va| 4438全国最大视频成人网站在线观看| αv中文字幕在线观| 囯产精品久久欠久久久久久九大| 婷婷五月天综合网| 亚洲精品视频在线| 99自拍视频网站| 九九99热久久精品66中文字幕| 婷婷日日夜夜| 性生活久久朋友人妻| 色五月视频无码播放| 五月丁花色综合网| 丁香五月婷婷激情视频播放| caopeng97日韩| 免费视频舔| 天天摸天天舔天天爽| 婷婷五月天成人五月天| 天堂婷婷五月在线| 久久96热| 色播激情五月天| 五月丁香六月综合激情无码软件亮点| 欧美丁香婷婷五月天| 天天爽天天爽| 综合久久9| 色五月综合网| 亚洲视频一区| 操人妻视频91| 六月婷婷综合激情| 另类视频在线| 偷偷与邻居做爰完整视频| 女人被躁到高潮嗷嗷叫小| 大香蕉色婷婷伊人在线| 综合激情九月婷婷,激情综合婷婷中文字| 亚洲殴洲精品Av在线| 日hao1区| 五月天综合在线| 天天爽日日搞| 久久人妻伦理| 九九色人| 99国产精品久久久久久久久久久| 色碰97| 亚洲人妻Av| 91婷婷丁香五月天免费视频网站| 久久机只有这里精品| 丁香六月激情国产| 精品久热| 久久婷婷五月丁香蜜桃网| 午夜成人在线免费视频| 另类图片天天影视在线观看| 日本精品。999| 五月丁香六月成人| 丁香五月天激情| 天天色粽合合合合合合合| www.超碰97| 久久久jd| 五五月五月| 精品人妻一区二区三区四区不卡在| 久久综合激情| 99热香港| 操91| 婷婷五月天综合在线| av大香蕉| 操草草草| 婷婷五月综激情| 天天色天天噜| 日韩婷婷| 色婷婷av综合网| 六月99天天婷婷激情综合| 思思re视频在线| 色玖玖综合网| 久久综合9| 五月丁香激情婷婷| 狠狠CAO日日穞夜夜穞AV | 97色色色| 热热99爱爱| 情欲综合网| 97色永久免费视频| 热婷婷av| 成人婷婷五月天| 激情婷婷五月天| 免费碰碰视频久| 欧美五月丁香啪啪响视频| 五月激情影视| 六月丁香啪啪啪| 高清视频一区| 色色色色网| 最近中文字幕2019视频1| 久久亚洲婷婷| 久久婷婷五月综合色丁香| A短视频免费在线观看| 婷婷性爱| WWW,五月| 丁香五月区| 成人超碰Av| 天堂婷婷综合| 五月丁香婷婷AV天堂| 99自拍视频网站| 久久hd| 色五月婷婷丁香五月| 无码激情AAAAA片-区区| 超碰久热| 婷婷伊人五月天| 97九色视频| 激情丁香五月天图片| 91在线97视频| 玖操97| 国产人妻人伦精品一区二区| 99成人网站| 99热这里只有精品在线| 五月丁香福利| 啪啪啪大香蕉| 色色色国产| 五月天激情四射网站| 丁香久久五月婷综合| 久久九九热视频| av操B网站| 六月丁香婷婷天堂| 久久婷婷丁香花综合网| 开心五月婷婷激情网| 成 人片 黄 色 大 片| w婷婷五月婷婷w| 国产又爽又猛又粗的视频A片| 丁香六月婷婷高清| 婷婷五月在线视频| 丁香五月自拍| 五月日韩中文字幕| 26UUU亚洲欧美| 丁香五月婷婷动漫视频| 国产毛片欧美毛片久久久| 久久无码激情视频| 五月天久久久| 精品皮股午夜AV| 久草免费福利视频| 五月天激情亚洲| 97偷拍对白视频| 五月天久久综合婷婷| 欧美色色干| 99综合| 久久婷婷六月综合资源| 一二线视频 另类| 天天做夜夜爽| 久久婷婷内射| 丁香五月成人社区| 天天草天天日| 久久天堂色| 人妻久热| 怡红院院久久| 97干资源在线观看| 色色色五月婷| 天天做天天爱天天爽在| 亚洲第一成人无码A片| 91丨九色丨国产打屁股| 三级av在线| 五月丁香六月婷婷在线| enecarbon-materials.com污K127封锁请涟系@wip1688 | 久久久久久久久久久久久久久久一道本| 亚洲人人操BD| 成人网在线视频| 啪啪综合网| 婷婷精品性性性性性性性| 一级二级色大片| 天天插综合| 亚洲精品网站色视频| 免费无码毛片一区二区A片| 丁香五月天激情网| 狠狠综合| 五月天久久小说| 日韩av在线电影| 精品色色网| 99丁香五月婷婷在线| 色九九综合| 啪啪亚洲综合| 99热偷拍| 精品热九九| 日日爽日日| 色综合久久久久久久久五月| 综合性爱网| 操大屄五月天视频| 国产精品久久久久久白浆色欲| 婷激情五月| caop在线| 丁香深五月婷婷| 五月天婷婷综合网| 丁香五月天成人网站| 天天摸.天天mo| 丁香六月婷婷综合啪啪| 欧美色综合天天久久综合精品| 99免费在线| 六月婷色六月| www.激情| 久久九九囯产| www婷婷色| 99思思| 九九精品网| 深爱网深爱综合网| 啪啪激情综合| 六月色 亚洲| 成人无码髙潮喷水A片| 人人97碰| 99热最新| 色99热| 色吧五月婷婷六月丁香| txt五月激情四射网综合俺也来了 五月天婷婷丁香人人操91 | 这里只有精品久久| 美英法精品无码免费视频| 99色综合网| 超碰在线9| 天天色99| Www.se.久久| 这里只有精品视频国产| 8区视频在线| www久久久久| 97国产精品女人碰碰| 欧美性生交XXXXX无码小说| 这里只有精品1| 99ri视频| 日韩啪啪视频| 中文久久婷婷| 91激情五月开心| 激情五月六月婷婷| 五月丁香色婷婷熟女| 亚洲激情五月丁香久久久久| 思思99精品视频在线观看| 五月天激情站| 久久丁香婷婷五月天| 超碰在线观看9| 国产脫衣舞一区二区三区| 99热很操老逼| 五月婷婷色白丝| 99内射视频| 日本123区日韩欧美不卡在线看| 桃色成人网| 亚洲无AV在线中文字幕| 丁香五月婷婷基地| 九九99九九精品免费| 激情丁香婷婷| 五月色丁香| 成人va在线播放| 五月丁香婷婷综合网| 狠狠狠狠狠| 五月天激情小说| 在线另类| 亚洲无码影音| 亚洲天堂AV综合网| 午夜婷婷久久 | 成人日韩欧美| 欧美天天五月丁香免费观看 | 激情综合五月色丁香婷婷| 天天干天天操天天爱| 人妻久久久久久久久久久| Www,五月天| 无码橾| 99黄色性生活| 99热最新网址| 久久这里只有精彩| 久久这里只有国产精品视频| www一区二区三区| 五月天综合视频网| 超碰99在线观看| 夜夜爽天天爽| 九九九九精品精| 狠狠色网| 在线播放中文字幕| 激情五月视频| www.五月天婷婷| 9999三级片| 国产肥白大熟妇BBBB视频| 色婷婷很很丝袜| 91色逼| 梁铮版蜘蛛女在线观看| 伍月婷丁香花全集| 久99视频| 欧美槡BBBB槡BBB少妇| 激情五月丁香色色去久久| 影视av久久久噜噜噜噜噜三级| 色色精品色| 99九九精品| 五月丁香婷婷色色| 99年操人人爽| 丁香五月综合久久综合| 九九色中文| 97色色在线视频| AV在线大香蕉| 99燥99日| 久久精品9| 久久这里都是精品视频| 婷婷色情网| 午夜精品久久久久久久爽| 99人人操人人爱久久久| 国产色婷婷亚洲| 五月婷婷之综合激情| 九久9精品| 嫩草视频。| 思思热在线视频观看精品| se99视频| 99久在线精品99re8热| 色婷婷影| 丁香五月老师| www.国产色| 9l视频自拍九色9l黑人| 99在线热| 久久婷婷视频| 亚洲亚洲人成综合网络| 婷婷99视频精品| 五月丁香狠狠| 色婷婷综合网站| 综合另类激情| 思思99热热热99| 五月丁香色婷婷色| 国产毛片操B| 色综合xx| 婷婷性爱影院| 久久综合五月天激情小说网站| 亚洲欧洲99| 婷婷婷婷婷婷婷婷| 婷婷六月香| 激情 五月 婷婷 丁香| 亚洲欧洲国产精品| 五月色情婷婷| 婷婷五月天综合蜜桃| 五月丁香久久| 九九人人自拍| 思思热在线精品视频| 9久热精品在线视频| 狠狠爱婷婷爱| 久久亚洲天堂| 99在线免费视频播放| 五月综合影院| 日韩精品AV一区二区三区| 婷婷色亚洲| 97操碰在线视频| 婷婷五月综合丁香久久| 色婷婷色情| 色婷婷99| sisi热国产| 99热在这里只有精品| 激情另类综合| 九热精品| 99啪啪网| 日韩超碰在线| 人妻激情视频| 色色无码| 久操97| 九九大香蕉黄色影院| 综合网网欲色| 亚洲熟妇无码乱子AV电影| 色色五月综合| 色爱五月天| caopeng97人人| 五月亭亭性| 色99色| 免费AV在线| 婷婷色丁香五月| 亚洲激情另类| 五月天基地| 激情四射网| 欧美激情综合色综合啪啪五月| 在线天堂9| 久色网址| 玖玖热视频| 精品无码色欲AV| 蜜臀AV在线观看| 天天操夜夜爽| 日韩有码一区| 91久久九久久九久久九久久九久久| 精品99在线观看| 另类专区在线观看| 日本色频| 丁香五月天激情综合| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 五月丁香六月香香蕉| 九九久久99| 久热这里有精品视频| 国产精自产拍久久久久久蜜| 五月婷导航| 色婷婷色综合激情91| 色五月六月| 色婷丁香五月| 内射干少妇亚洲69XXX| 亚洲婷婷激情888精品久| 99久久天堂婷婷| 激情婷婷五月| site:hcxsz888.com| 五月婷婷涩涩爱| 天天干狠狠| 色婷婷丁香五月| 国产精品涩涩涩视频网站| 久久视频这里99| 铁牛TV人妻| 激情综合亚洲| 久久66精品| 婷五月天六| 91一起操| 99热99干| 91欧美| 婷婷丁香九色| 97视频久久| 五月情四婷婷| 91pornav在线| 99精品亚洲| 五月深爱网| 99在线热| 久久久日韩特色特黄AAAA| 91婷婷色五月| 色狠狠激情五月| 色婷婷综合电影| 天天弄天天操| 播五月开心婷婷欧美综合| 久久er这里只有精品| 五月色丁香婷婷综合| 色五月激情综合| 国产毛片欧美毛片久久久| www,天天干| www.五月激情.com| 操逼国产91| 一起草AV入口| 性视频久久| 99re这里只有精品视频了| 97久久人人操| 99er热精品视频| 五月婷婷五月天| 婷婷伊人综合中文字幕| 操逼123网| 国产99美少妇| 九伊人网| 国产内射婷婷| 婷婷在线精品| 婷婷五月天色播| 五月综合婷婷网| 91啪啪网| 99热免费18| 久久伊人大香蕉| 五月色色色| 一本久道综合色婷婷五月| 婷婷五月天伦理| 婷色五月天| 亚州综合色| 影音先锋五月婷婷| 国外亚洲成AV人片在线观看| 五月天激情四射网站| 狠狠xx| 综合五月天天天天天五月| 久久五月天激情婷婷| 欧美日韩国产伦精品日韩人妻一| 热99.com婷婷| 午夜天堂一区人妻| 激情五月天社区| 五月天婷婷综合| 日韩AAAAA| 丁香五月冃欧美| 久久只这里有精品| 激情五月第四色| 九九综合视频在线观看| 在线天堂9| 另类激情四射| 久久资源综合| 五月丁香综合久久夜夜| 国产一级视频a| 色一色综合| 久久思思热| 日本欧美成人片AAAA| 中文av网| 五月婷婷五月天| 人人操五月天| 久久激情网| 另类视频五月天| 五月丁香大香蕉| 色99在线| 九九色影院| 99热9| 99久久99久久综合| 成人无码精品1区2区3区免费看| 欧美日韩99| 激情五月婷婷| 日日操夜夜擼| 婷婷综合玖玖五月| 在线中文字幕免费视频| 在线综合91| 色约约视频一区二区三区四区五区 | 久久久五月天| 超碰国产在线| 开心婷婷五月激情网小说| 开心五月婷婷激情| 亚洲99手机免费看视频 | 亚洲人妻av| 97色色视频| 99色婷婷视频| 少妇性按摩无码中文A片| 99热思思| 香蕉久久五月| 成人在线视频男人的天堂4399| 亚洲午夜一区二区| 人妻激情在线| 五月天五月色婷婷综合| 九九99视频精品| 色噜噜婷婷| 激情综合网五月婷婷| 色五月首页| 五月天成人免费视频| 六月婷婷综合网2| 色色色宗合网| 4399在线日本A片| 国产伊人五月天| 99视频精品8| 精品人妻伦一二三区久久| 色综合久久88色综合天天99| 综合久| 成人五月丁香花| 日本女人久久| 99国产er热视频| 99久久大片| www.日本91| 亚洲精品久久久久AV无码| 91午夜婷婷狠狠久久综合9色| 七七色色综合| 丁香五月自拍| 色婷婷五月天小说| 久热九九| 秋霞av吧| 九九久久五月天| 青青五月天婷婷| www.maotanji.com| 五月丁香久久| 欧美日韩国产伦精品日韩人妻一| 九色婷婷| 麻豆123区| 成人国产综合| 51精品国自产在线| 九九色色网| 亚洲丁香五月美女| 五月丁香婷婷久久| 美国少妇性做爰| 99九九在线| 婷婷五月激情在线视频| 另类图片色五月| 91九色 熟| 天天开心天天色| 人人视频人人干人人做| 五月天国产| 五月丁香六月婷婷久久肏| 精品五月丁香| 噜噜吧天天爱| 激情人妻蜜夜系列区| 久久停停超碰| 思思热精品在线视频| 91色久| 亚洲av成人在线| 婷婷五月天激情网站| 欧美激情综合色综合啪啪五月| 99视频91| 丁香婷停五月激情综合深爱| 99热啪啪| 超碰精品国产首页| 婷婷五月六月激情| 亚洲无AV在线中文字幕| 性色婷婷| 五月天婷婷乱论小说| 免费无码毛片一区二区A片| 五月开心婷婷极品激情| 五月天综合区| 五月丁香在线| 婷婷五月丁香av网站| 色XX综合网| 超碰成人影视| 五月天婷婷在线观看精品男人| 九九色逼| 日韩人妻无码精品| 深情五月天| 99亚洲精品综合在线| 激情五月深爱五月| 人妻精品一区二区三区| 成人免费在线电影| 桔色成人在线| 婷婷六月偷拍| 色婷五月丁香久亚洲| 欧美大肥婆大肥BBBBB| 久久五月天婷婷| 色综合九九| 99碰碰| 天堂色婷婷| 五月天婷婷香蕉狠狠超碰综合| 天天操九九插| 久久久99精品免费观看| 亚洲激情99| 亚洲色热| 夜夜骑操AV| 99热这里只有精| 久久aaa| 久久精品无码一区| 婷婷五月天色综合翘|