国产精品爱啪在线线免费观看_97视频精品_欧美精品一区二区在线播放_国产欧美久久一区二区三区

新秀網絡驗證系統

標題: Discuz 插件開發【旗艦版】 二次開發 - 在線手冊 [打印本頁]

作者: admin    時間: 2025-7-2 17:00
標題: Discuz 插件開發【旗艦版】 二次開發 - 在線手冊
驗證插件二次開發

本功能由PHP+MYSQL語言開發,無縫對接新秀網絡驗證系統,采用獨立入口文件、類文件、第三方類文件庫進行調用開發。所有功能實現及控制均采用api接口操作,數據輸出形式為JSON、XML兩種常見形式,達到毫秒級數據快速交換功能。

1、插件開發是結合新秀網絡驗證系統進行的二次開發,不能獨立使用;

2、插件開發遵循Discuz、新秀網絡驗證、PHP語言規范開發;

3、插件開發適用于新秀網絡驗證系統旗艦版ver1.0版本以后;

4、本功能與新秀網絡驗證系統、擴展框架系統,代碼相互獨立,但功能同時執行;

5、插件開發可使用Discuz內置函數、新秀網絡驗證內置函數、PHP函數。

適用環境:php版本>7.1、Mysql版本>5.7以上、Discuz版本>3.5。

= Discuz資料庫  = Discuz插件開發文檔  = 開發交流  =  BUG反饋  =  QQ客服:3188639  QQ交流群:281079920


0 d: m' R% L% Z% l& ]! g9 J8 e: L
接口開發常用函數

1、DB數據庫操作函數    /*常用MYSQL數據庫操作命令,增、減、改、查功能函數。*/

2、新秀網絡驗證數據庫對照表    /*新秀網絡驗證系統內部,所有數據庫表及說明*/

3、Discuz官方數據庫對照表  /*Discuz官方數據庫表,包括discuz、UCente數據庫字典。*/

4、Discuz基礎框架、類、函數    /*包含Discuz官方基礎框架、類、函數、方法使用說明。*/

5、新秀網絡基礎框架類、函數    /*包含新秀網絡驗證基礎框架、類、函數、方法使用說明。*/

* G* `2 a+ [' N6 J
使 用 簡 介

1、插件開發演示文件下載(IP地址查詢)

(, 下載次數: 93)

2、插件開發演示文件目錄說明

xinxiuvip_network_plugin \\新秀網絡驗證應用中心插件主目錄

—libs \\自定義類存放目錄 (用于開發者存放第三方類、自定義類)

——libs_ip.php \\自定義方法庫開發文件 (自定義開發接口方法庫)

—function \\自定義方法存放目錄 (用于開發者存放自定義開發接口類和方法)

——function_ip.php \\自定義方法類開發文件 (自定義開發接口方法類)

—plugins \\插件數據庫代碼存放目錄 (用于開發者存放插件數據庫執行代碼)

—ip\\插件名目錄

——extend_network.php \\設置插件數據庫執行代碼文件(數據新增、更新、刪除,接口增加、刪除功能,插件安裝和卸載代碼)

template/plugin/admin \\插件前端htm開發存放目錄(根據discuz官方插件前臺開發代碼進行開發

—ip\\插件名目錄

——ip.htm \\插件后臺設置文件(根據discuz官方插件后臺開發代碼進行開發,并在插件設計頁面自行增加插件設置文件入口)

ip.inc.php \\自定義接口入口開發文件

3、如何安裝、開發、調試?

#1、下載演示文件后,上傳至新秀網絡驗證應用中心插件根目錄。discuz論壇插件根目錄 \source\plugin\xinxiuvip_network_plugin\

#2、使用PHP代碼編輯軟件,對入口文件 ip.inc.php 和 自定義方法類文件 function_ip.php 等進行開發。

#3、如需新增接口文件,請根據演示文件,修改 “ip” 為您想要的文件名,但不能與新秀框架插件內文件名沖突,且開發的接口方法,不能與新秀框架沖突

#4、如何發布自己開發的插件并獲取一定收益,請聯系客服QQ:[qq]3188639[/qq]

#5、功能代碼開發完成,組裝調試接口:


//根據演示文件中組裝url接口地址

http://demo35.xinxiuvip.com/plugin.php?id=xinxiuvip_network_plugin:ip&action=ip_cha&key=123456&ip=14.21.97.153


[PHP] 純文本查看 復制代碼
{
# A* E) |9 `* O, G0 }- b1 F0 r        "code": 200,
4 @" B# N' V. U8 v* ?) R        "result": "OK",' [. b# v) J! x% ^1 E/ S- Y# z
        "count": 2,
. f8 m( a- v( N9 |& s0 K! `        "data": {
! r  s, a2 ?5 {( n                "ip": "14.21.97.153",' i! X+ u  F2 {1 u
                "dizhi": "- 廣東"+ P4 `  @+ U3 z7 ^! u
        },
! {. T) {; @# P- P        "sqltime": "0.027s",! ?4 t) m' R# v: T% [
}

ip.inc.php入口文件代碼實例
[PHP] 純文本查看 復制代碼
<?php& s0 o5 P+ i$ b6 a& l
#========================================% v; o) N# s: `! A5 ~
#以下兩行代碼,用于開發環境下代碼錯誤提示,可根據提示信息進行代碼檢查,無誤后即可注釋掉!
" \: `7 i1 o* q+ a//ini_set("display_errors", "on");
3 i/ o: ]8 q- o//error_reporting(E_ALL);& B, w4 E9 D0 L% n1 o" Q
#========================================
1 a" t$ j# V* ?/ I3 k4 d) A2 l/ [0 t/ k9 N0 n6 j1 B
#========================================
7 u/ [# X% d) K4 k# J#防止游客直接輸入網址進行訪問,權限檢測,勿動!!!
- l' d: W) z9 C5 {6 G' E' H' n: O* Yif (!defined('IN_DISCUZ')) {. U' k2 _; b8 u
    exit('Access Denied');
' Q. R! N* S% r) B: p' A. j% z}
0 h+ p& U# z3 H. F& J#========================================
, x, P4 J; [8 `3 r7 e
/ E( y, y0 o8 k# S$ B#========================================; D/ f0 E& F7 F& S* c4 f8 v3 w
#引入自定義開發類文件,此文件保存位置 'function/ip' 代表 function/function_ip.php 如需修改請按格式進行!" E& n2 t2 ~7 E) A3 X
C::import('function/ip', 'plugin/xinxiuvip_network_plugin', false);//注意這里插件開發和接口二次開發不同!
$ U4 p" T7 H% d$api = new function_ip();//實例化function_ip.php類操作,實例化后可用$api->調用function_ip.php中的類方法!
1 R$ v- J1 _# @6 q4 P6 K$ e5 P$ P7 l#========================================
) B! A/ c0 |2 |; w
; o( S- e2 `& b  F' O% |) x* g6 o; q7 z" K+ [" f/ m
#此處為入口文件,根據接口方法,調用對應類方法。# Q  _8 V$ V- `& ]3 L) K" y
switch ($api->action) { //$api->action 獲取入口方法,勿動!!!( a" \8 ~9 k" l

! c' D' O9 i. P    #========================================0 W; k. R8 |' ?- K* o3 ?! D
    case 'ip_cha': // 判斷是否是此方法,如果是則進入下一步!
% S  e; q7 {+ E$ M$ `        $ip =  web_client::safe_check('ip', true); //判斷參數傳輸,params為參數名稱,iscore為是否是必填項(true為必填,false為可空)9 |& Z' c6 Z9 ^8 U
        $api->ip_cha($ip);//調用function_ip.php實例化后類方法,根據類方法設置傳入參數。
, d6 j( G  B' X        break;. Q. k  c" g. \  F0 a( _6 h% Z! I
    #此處代碼根據接口開發需求,可以無限添加循環。
4 x5 [4 w& K# j! X9 P$ V    #========================================" [! e% N; X) Z4 n

2 i9 t6 E, D2 o0 ~, z    #========================================% I9 V: k7 O* d6 t
    #此處代碼是判斷接口輸入是否正確。勿刪!!!
& O" |5 A  e- B: p    default:/ Q7 v* t) }2 C
        web_output::json_output(400,'error010');
6 s8 l) U# m- ~9 [  X2 F        break;0 {8 p7 G; d6 Z+ |& [
    #========================================
+ m7 R; U. Y/ w8 c0 m# M}
! W2 k) v1 a& n1 y8 _

, I% r" k) ]2 u* R6 `; V
function_ip.php自定義方法類代碼實例
[PHP] 純文本查看 復制代碼
<?php
* y! U) d, C+ g8 r% y1 t) I#========================================  ?: j$ Y& h% w4 X. x; a) z
#以下兩行代碼,用于開發環境下代碼錯誤提示,可根據提示信息進行代碼檢查,無誤后即可注釋掉!
2 i8 p. I5 G- v) d4 m' u" L//ini_set("display_errors", "on");
/ ~- C/ w- c& @//error_reporting(E_ALL);3 u+ H: L0 g8 `) ?  R' Y: G7 h
#========================================7 i. h5 u4 T% _6 D
1 \- Q) C/ U: R1 s3 k
#========================================
. Q6 V7 Q5 {* X, b4 f#防止游客直接輸入網址進行訪問,權限檢測,勿動!!!
, x5 C9 l( }  Y3 ^if (!defined('IN_DISCUZ')) {0 ?- B: {' _' @6 o% b5 B5 Z; R
    exit('Access Denied');
- e3 t# _5 f0 g3 k3 t( W3 M6 T}
' f( J8 I. C% N' ^" l#========================================1 ^' m# C& K9 q2 a$ M. x4 o4 ]! c
$ n  N9 f7 x7 ], v5 }2 D  }5 o
#========================================  O) V$ N* l# c, U
#引入核心系統類,勿刪!!!
1 H: K  v+ }6 xC::import('class/plugin','plugin/xinxiuvip_network_plugin',false);9 \6 A" ~7 U$ V' H; x$ `1 T5 H, K4 f
#========================================0 C, h6 |, p% I" a! y2 r+ A

; S3 ~$ u9 U( t4 b) ]
  C9 {5 `* i# \( f#如何引入自定義系統類?  |6 J' w" B( U' {$ r
#1、將自定義核心類、第三方核心類上傳至extend文件夾下;
& z8 o: {3 U; U* s7 }6 C7 ~3 w% ~0 @( s7 O#2、通過 C::import 、 require_once 兩種引入形式引入第三方核心類;7 x9 o/ _1 Z: `8 H2 `
#3、在下方方法中使用 lib_ip::convertip_tiny($ip, $ipdatafile); 進行調用,具體功能看lib_ip封裝代碼;
/ c' Y/ c# b+ A# OC::import('libs/ip', 'plugin/xinxiuvip_network_plugin', false);//如果沒有自定義類庫,請將此處注釋掉!/ ?" }, K' A; r7 i1 _; m) P. D
#注釋結束
% m4 _: V  T0 V; ~
) D9 j5 E. [! C' L7 u) l4 O* N
' V1 H# X9 m- n' M; J/ q5 mclass function_ip extends class_plugin+ Q3 j  e$ V; r+ Q
{
# z* _2 l5 q8 c    public $action_all = array('ip_cha');//所有接口必填,用逗號隔開!!!除以下key、adminkey所包含以外,未包含的接口都是通過token令牌進行訪問。
8 B% O' P! x4 v; I/ j, h! \) ]! w8 ~2 h    public $function_action_key = array('ip_cha');//使用key密鑰訪問的接口1 i$ _! J) g* i6 F
    public $function_action_adminkey = array();//使用管理密鑰adminkey訪問的接口6 K  c) u* T# g) S9 ]0 x6 V  B

7 F9 X4 d+ U1 a% r    /**
( T) D7 E; T  h( A! ]2 P     * 構造方法 __construct() 是在實例化對象時被自動調用
. `5 t5 i- ?" x+ R1 I2 Y$ @2 [     * 用途:可以用于初始化程序(可以給成員屬性賦值,也可以調用成員方法)- m5 T6 l; T% H5 [3 @
     */7 t5 j. H, e" i9 R) Z2 R
    public function __construct(){% T" v$ b% }: o
        $this->plugin_config;//是后臺插件設置的數據,可在本頁面進行調用。% \5 c8 W9 W  n; h" i' j1 k
        parent::__construct();//注意這里和接口二次開發不同. ]1 o# c8 z8 ~! h& l* G
    }
9 r' d5 C9 P5 r
( V) K+ o2 n: f' S    #========================================6 ~$ r# p8 V( m9 b
    #此處為標準類方法,可根據DISCUZ、新秀網絡驗證內置函數進行調用,也可使用PHP官方函數進行操作。. @. @% ?3 k( T& ]" G1 o
    public function ip_cha($ip){; S- j) c9 z$ G

' f8 C1 {9 ~) X        #-具體DISCUZ內置函數、新秀網絡驗證內置函數、PHP函數,論壇相應帖子有專門介紹。
# |9 y4 v: ^5 N7 `4 e        $tinyipfile = DISCUZ_ROOT.'./data/ipdata/tinyipdata.dat';4 x7 f* `& `) }- x$ m' U* `

, z! z' k9 s' M: t, q$ b% Y        $data = libs_ip::ip_tiny($ip,$tinyipfile);//調用lib自定義封裝類庫示例;
' I' E5 F8 x5 ]+ b      
, q& ]7 [1 F. p& n) x4 S+ _( {        $data_array = array(
1 N# {3 D2 ^$ @. h! {& v4 ~$ B6 p4 f            'ip'=>$ip," t: i' K4 }7 Y" f2 H
            'dizhi'=>$data,
) o8 l; T, f# {) e5 `7 M        );
- D( R& Q4 y. @" L6 B. ?
2 B- _/ L& ?# y+ M6 ~
% Z+ `5 T/ q- q# ]- b- ^' t        #========================================( o2 L7 L: x8 k
        #嵌入插件開發鉤子,注意:此擴展方法在應用中心擴展文件中使用‘extend_plugin.php’;
- j# J3 V( U5 I        web_client::class_hook('hook_ip_cha',array('ip'=>$ip));  M  G5 ^. E# x" ?! K% G

+ A, ]! D1 T5 U, H# A        /*
3 ]3 |3 |! O. e, Z" Z* {         * 下面是插件拓展對應的方法0 n+ F, L4 ]. o+ w$ \+ D
         * 注意class_hook中的'hook_ip_cha' 就是擴展文件中的方法名!
0 r  o7 m6 \: _1 v8 s9 s" q         *
" u8 Q. a  r. S) C$ C8 c: k& X- `$ g$ a        public function hook_ip_cha($ip){
0 p* c$ j" m+ ^* x0 j            var_dump($ip);1 }3 z! R6 [' F8 I+ Z* W+ k# s
        }5 N! z! Q% N( g2 ]$ W
        */5 B' f/ q4 G4 Q+ q
        #========================================
7 D* @  O- s5 k2 o9 K
6 e# r$ u) z% i/ H( S; C
: I, X. H: ~, l+ [: j
1 P4 Z" Z; y; P3 C        $data ? web_output::json_output(200,'OK',$data_array): web_output::json_output(400,'請檢查IP地址是否正確!');
% Y( e: n) Z  j# R$ o. a. D        #-具體DISCUZ內置函數、新秀網絡驗證內置函數、PHP函數,論壇相應帖子有專門介紹。
6 e  W7 U# \0 Q, r    }2 T9 V: L6 [  b
    #========================================. j" {  L% E! k9 c' ]
) a. @: u+ s! E
    /**" v" q/ e4 I8 A
     * 析構方法 __destruct() 是在對象被銷毀時自動調用& ~# a4 D9 j- Z  K+ h
     * 用途:可以進行資源的釋放操作或文件的關閉操作或信息保存操作
/ G% m4 B6 s2 I4 @  T5 k     */
! |& z. r" ?5 f    public function __destruct()" T+ F) f+ X* f0 }+ d
    {
& F+ H1 W% k8 X* [& S+ A" S8 W) `. m        return parent::__destruct(); // TODO: 析構方法
8 ]; M1 p6 C6 N* U, m    }2 k$ U4 J, b# D8 h

! |# H% X+ v* \6 x, N}

+ X* l" [: ]5 d6 y7 k
lib_ip.php自定義方法類庫代碼實例
[PHP] 純文本查看 復制代碼
<?php
% x( C& W9 t9 s) n  y& R" o) n$ \#以下兩行代碼,用于開發環境下代碼錯誤提示,可根據提示信息進行代碼檢查,無誤后即可注釋掉!7 r4 |8 J7 }0 O7 T1 L
//ini_set("display_errors", "on");
# S4 [' h; M+ _8 s//error_reporting(E_ALL);! m9 ~6 F, H) A7 j' g1 m
#注釋結束
- [7 i; L0 L1 G: i: ^3 T% M/ k2 J6 C6 H7 n6 F6 g
#引入驗證自帶核心系統類,勿刪!!!: {  V( [* o5 E/ d" l9 t0 b+ p
C::import('class/xinxiu', 'plugin/xinxiuvip_network', false);
2 _0 o9 E! h1 A. n# t) q#注釋結束" L- n) a' t# b4 Z+ g) z

# \, v8 B# @1 Q$ g' \  wclass lib_ip) s, l7 H2 Y- |! ?9 {: M( z
{
0 ?# F( N7 G; y3 T* a9 A
  J7 z* Y8 r: e3 @0 V+ l6 A    /**
7 q: I; I, \' k) V7 h0 q! C     * 自定義方法類庫,用于擴展系統功能!
2 N" X  v' `! K7 \     * 1、在function_ip.php中引用此類庫,直接調用方法即可!  z( z) R' b. p4 B  y+ B
     * 2、引用代碼:C::import('lib/ip', 'plugin/xinxiuvip_network_plugin', false);//引用自定義類庫!
3 C4 j( Y- j' c  c, N% y     * 3、此方法為純靜態方法,無需實例化,可直接調用!( D3 `2 ~3 E& n% H
     * 4、調用代碼:lib_ip::convertip_tiny($ip,$tinyipfile);//調用lib自定義封裝類庫示例!
. {! Z& G8 I6 J) a6 T' Z     */" d/ D) D- S' `/ j* Z& o$ K  G4 b
      public static function convertip_tiny($ip, $ipdatafile) {+ f/ q9 W/ U* V. @1 Z0 ^. A- K, J7 r
4 L6 {6 k  o- K0 ?
        static $fp = NULL, $offset = array(), $index = NULL;
5 {, A. X$ d% _+ e
! j* h$ [0 f( a        $ipdot = explode('.', $ip);
+ _( f' ?8 S% U4 P        $ip    = pack('N', ip2long($ip));) U, U4 q( v) m
, e- r! I3 k) C: j
        $ipdot[0] = (int)$ipdot[0];4 S( ]# E9 y# l0 @
        $ipdot[1] = (int)$ipdot[1];# H. r3 V8 s+ B9 S) T- B/ J& t

+ \! h- \" a& ?        if($fp === NULL && $fp = @fopen($ipdatafile, 'rb')) {
+ ]3 J% m! u" q& r            $offset = @unpack('Nlen', @fread($fp, 4));
" u. K3 D) R& i; h$ c            $index  = @fread($fp, $offset['len'] - 4);4 M# d; c! q- N
        } elseif($fp == FALSE) {! A2 K) r- ~$ G3 d
            return  '- Invalid IP data file';
  V4 a% U5 t! K        }# t0 O& L" Z- a) T# V
4 t8 x* s* P/ s9 i" T% c# }
        $length = $offset['len'] - 1028;
8 a6 s. O$ P2 n        $start  = @unpack('Vlen', $index[$ipdot[0] * 4] . $index[$ipdot[0] * 4 + 1] . $index[$ipdot[0] * 4 + 2] . $index[$ipdot[0] * 4 + 3]);. x$ N: `) r# y  M' n% u# W
/ G) |8 s$ ]8 V2 F" w7 f- f; b
        for ($start = $start['len'] * 8 + 1024; $start < $length; $start += 8) {
* m3 m# U0 V; K' H/ X+ M$ j; G1 T/ Z# f# l4 R0 n' d. u
            if ($index[$start] . $index[$start + 1] . $index[$start + 2] . $index[$start + 3] >= $ip) {2 a2 A& _) ^9 f1 q1 [
                $index_offset = @unpack('Vlen', $index[$start + 4] . $index[$start + 5] . $index[$start + 6] . "\x0");
6 f: r2 n+ g  h1 Z: C) m$ H/ Z. l                $index_length = @unpack('Clen', $index[$start + 7]);
. c0 Y( q& q6 E9 S2 T8 |! v                break;
2 k3 ~" P* R' v& r0 a. k% B            }
4 ^9 t; Q6 f: b5 u        }. m8 O5 W6 U' e+ E, G
# P+ I8 K* j7 E6 h& \3 y
        @fseek($fp, $offset['len'] + $index_offset['len'] - 1024);0 z, w% j$ o# n! I/ b) ~5 I
        if($index_length['len']) {- ^4 ?, Q! O# s% {9 h
            return '- '.@fread($fp, $index_length['len']);6 }( q( K; B" D
        } else {# ], ~! [4 F. ]1 c$ M
            return '- Unknown';5 }5 @( f; T/ p. Q0 V
        }7 A1 d6 [! e8 f; J: I, E" `

3 A" D( w; ~. y    }
, r+ M* o) D0 ~& Q. J4 c}
& J1 r8 b8 f' F2 F, W
: s% A; z/ v& E; |6 G- a
ip.htm插件后臺設置文件
[HTML] 純文本查看 復制代碼
<!DOCTYPE html>" [$ p8 L! u3 v. Z, M
<html>5 H1 P( `  n/ x: F. `1 }4 \
* }. C' z! K. ?0 v' D
<head>
& {2 S3 B6 k% ?4 l( ^9 N    <meta charset="utf-8">6 Y& K) M) P% Q" ?) P
    <title>插件設置頁面</title>7 A1 S  [7 I3 }# _$ i" y
    <meta name="renderer" content="webkit">( N. I7 N9 a& M, W$ C0 g# \
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
2 \- n, N. @& _( `. ^    <meta name="viewport" content="width=device-width, initial-scale=1">
1 c7 g& T1 R; e/ p2 |" w    <link href="/source/plugin/xinxiuvip_network/template/res/layui/css/layui.css" rel="stylesheet">
7 u( w6 K7 v( W7 X    <link href="/source/plugin/xinxiuvip_network/template/res/adminui/dist/css/admin.css" rel="stylesheet">
7 D3 _+ y5 \  h% O- _</head>
* P- J7 V$ {* {<style># [: g4 }8 J! I1 X6 m# E- o, T3 k
    body {
; Z9 s7 M4 ~/ q        background-color: #ffffff;' W6 |" l) m) a% T" Z$ F
    }1 s, }6 i7 f/ K+ n+ w
</style>1 D6 U! c+ M) X' m& O+ m
3 |7 g+ R9 n( b- ?1 m6 K; e
<body>. X  w8 ^1 l: b$ M% C

  c" x1 b  D) x$ Y    <div class="layui-fluid">/ e, I& P% @  ^3 [; n" N
        <div class="layui-main">& j' P) @/ r0 K: E2 N# Z: I) ?' V
            <blockquote class="layui-elem-quote">
/ q! s3 S. x" a: O9 f/ ~7 l) s                此頁面為插件后臺設置頁面,請根據具體文檔進行設置。: u: ?8 N; q  ]$ J/ ~  V0 U
                <a href="http://www.5566wy.com/forum.php?mod=viewthread&tid=649" target="_blank">【插件開發文檔】</a>
* O* D( y4 u' a5 }            </blockquote>
5 s$ R& ~& y! v9 m! x* \            <div class="layui-form" id="form" lay-filter="form" action="">
1 @+ K, s& [" D+ y9 \& x2 G  \

- @. b3 v* i; J  d                <div class="layui-form-item adminj-sort-item" style="width: 100%;">
  Q# L( p" D& R$ F                    <label class="layui-form-label">radio開關類</label>: `' j8 h( d0 T6 @( I. I& f; X8 ~9 i
                    <div class="layui-input-inline" style="width: 30%;">
$ C; r2 ~8 ?4 g8 `                        <!--{if $plugin_config['status'] == 0}-->4 t" i* L( M9 r3 ^! Z5 v
                        <input name="status" type="radio" value="0" checked="" title="正常" lay-skin="primary">
; z  e* e, d: L/ R                        <input name="status" type="radio" value="1" title="禁止" lay-skin="primary">
! d0 D7 t' l( I$ T/ B                        <input name="status" type="radio" value="2" title="其他" lay-skin="primary">$ H" Z( x$ b& p7 K2 a9 f7 e
                        <!--{elseif $plugin_config['status'] == 1}-->$ G7 d+ u0 @0 J+ x/ w3 {
                        <input name="status" type="radio" value="0" title="正常" lay-skin="primary">
+ O" D# L2 {* |% w* Z                        <input name="status" type="radio" value="1" checked="" title="禁止" lay-skin="primary">
+ R% m/ L" ^+ x6 i  b0 T                        <input name="status" type="radio" value="2" title="其他" lay-skin="primary">
! f' x: K& w( x* ]- Y* ?                        <!--{elseif $plugin_config['status'] == 2}-->. K2 H& _+ A8 R( j9 M7 O+ _; C/ s' W
                        <input name="status" type="radio" value="0" title="正常" lay-skin="primary"># q5 e: O2 B6 F$ F/ Q! H; K
                        <input name="status" type="radio" value="1" title="禁止" lay-skin="primary">
3 D0 i. _" j+ q# i                        <input name="status" type="radio" value="2" checked="" title="其他" lay-skin="primary">+ I( h6 K: ]& y$ t; e
                        <!--{/if}-->4 p: M) O( P( \" q
                    </div>* Y# e; _" R+ R3 d) z- l
                    <div class="layui-form-mid layui-word-aux">radio開關類注釋</div>
3 n5 S5 a# D( A  U5 N                </div>
5 k5 t* R5 I1 y  U3 x& C4 l9 }3 s3 i+ D# k0 b
                <div class="layui-form-item adminj-sort-item" style="width: 100%;">& v1 O. e& J" }- ]1 ]
                    <label class="layui-form-label">text文本</label>
) a, A; C1 N- P" _: _4 q- b                    <div class="layui-input-inline" style="width: 30%;">& b' h1 d: O! r* a9 C% o
                        <input type="text" name="text" value="{$plugin_config['text']}" autocomplete="off"8 h# B% P5 p2 P( H5 h
                            class="layui-input" style="width: 99%;">
& w& j$ D' x/ a% Z                    </div>+ N, G  T7 `# [' ~5 w% x5 f7 Y& q1 }) X
                    <div class="layui-form-mid layui-word-aux">text文本注釋</div>; u+ M4 q4 o# Y* \$ r9 i' j3 |
                </div>& ^3 e) c) z$ B  g
$ [8 Y+ `$ N) N
                <div class="layui-form-item adminj-sort-item" style="width: 100%;">
& \) f  t. @# s2 {                    <label class="layui-form-label">text文本驗證</label>8 C/ o4 M* m0 m& p
                    <div class="layui-input-inline" style="width: 30%;">8 T  w: K  \( U+ G
                        <input type="password" name="password" value="{$plugin_config['password']}" autocomplete="off"" s- c) l& K7 R
                            class="layui-input" style="width: 99%;">
  m0 Y; [9 [4 s. \8 W                    </div>) t: `! n2 E5 {- j- |
                    <div class="layui-form-mid layui-word-aux">text文本驗證注釋</div>, N8 U" X3 B6 a
                </div>
9 f0 m2 }6 q" H, Q0 R% ~$ T! p  _6 T* N4 ^- T0 s
                <div class="layui-form-item adminj-sort-item" style="width: 100%;">% }/ h* n3 E, K$ U7 H' G
                    <label class="layui-form-label">- K1 |6 ~! k9 v8 `: O5 K
                        textarea文本
! Z0 W( c3 e1 }, m6 W$ h                    </label>
  h, V2 ^- O$ G5 v  _                    <div class="layui-input-inline" style="width: 30%;">
: W) i3 d3 g, K' s: O. j                        <textarea class="layui-textarea" name="textarea" style="width: 99%;">{$plugin_config['textarea']}
9 w' A/ S7 J* F6 ]                                                </textarea>
# n2 v' E) n" }. b                    </div>
8 s, A7 n; t. y# V: W+ e                    <div class="layui-form-mid layui-word-aux">& A& E* P/ w+ ]2 n1 C3 N
                        textarea文本域注釋
' U. U6 b5 h) ~                    </div>7 a$ y- }$ r& T7 o5 a
                </div>. y/ o, i3 I- }3 j
                <div class="layui-form-item adminj-sort-item" style="width: 100%;">0 D; V  p2 E$ ]( o
                    <label class="layui-form-label">select下拉框</label># k8 E+ k9 K3 `
                    <div class="layui-input-inline" style="width: 30%;">6 b  a7 y- m5 E5 L
                        <select name="select">/ ]- @. j: d+ D& b
                            <option value="">請選擇</option>( C& _" _# o" N8 R& _7 j
                            <!--{if $plugin_config['select'] == 1}-->6 `6 ]. l. i2 P7 J. p
                            <option value="1" selected>value為1</option>
* E' w: N! n# ^+ Y+ |0 W                            <!--{else}-->5 }8 d' O  A7 x1 i2 v
                            <option value="1">value為1</option>% F6 `. o% C- c! c# c
                            <!--{/if}-->
* Q1 K6 @% j+ p( G, @                            <!--{if $plugin_config['select'] == 2}-->
3 d- w$ b; J! a/ ]2 L8 _                            <option value="2" selected>value為2</option>
: i) o& Z2 J& R, Z( K6 E3 T                            <!--{else}-->
  L/ \  B/ k3 O( M2 b- j                            <option value="2">value為2</option>
7 C/ T- X# v- w# Y  N                            <!--{/if}-->
  ?/ W" I( z# G+ K# P                            <!--{if $plugin_config['select'] == 3}-->
7 C& y% v! _* @2 B2 e                            <option value="3" selected>value為3</option>
4 e+ ]. z5 J, W6 p% K# \                            <!--{else}-->
8 t; X/ {; m5 g/ T  Y                            <option value="3">value為3</option>
. D& O1 P0 |" }! v. j! K                            <!--{/if}-->
- S6 k2 \4 c% b" g+ r8 h                        </select>! V  ^9 b- O- ~- k9 c
                    </div>
( I! F' a5 I4 ]7 }9 o* |. }                    <div class="layui-form-mid layui-word-aux">select下拉框注釋</div>
" Q- n" C9 @0 n& `4 X  N# p' J                </div>
) w- k6 G& [9 [5 k                <div class="layui-form-item adminj-sort-item" style="width: 100%;">
1 w+ E% j/ P8 Y                    <label class="layui-form-label">時間選擇</label>% \) |2 ]" y: y* q5 {0 F
                    <div class="layui-input-inline" style="width: 30%;">  z; ~  \3 a1 K) q2 A9 a4 o
                        <input type="text" name="groupline" value="{$plugin_config['groupline']}") t, Y4 M: y0 E
                            id="form-date" placeholder="yyyy-MM-dd HH:mm:ss" autocomplete="off"
- R/ t- J/ B4 Q                            class="layui-input" style="width: 99%;">
5 `8 x8 L( z5 Y2 y8 v  f                    </div>' j; b  D4 \& d. f* q1 N& r4 e
                    <div class="layui-form-mid layui-word-aux">時間選擇注釋</div># l" z" C* U/ W$ V* `2 V; Q8 F
                </div>4 ~6 t& S- q, m+ p
9 B2 r+ I* P* ]3 x
                <div class="layui-form-item adminj-sort-item" style="width: 100%;">7 X$ x6 F  k) ?' ?. {/ L
                    <label class="layui-form-label">3 b. N( l3 v' o
                        選擇積分
, X/ E" g$ `3 l$ I" R8 v                    </label>
# G6 a" t7 j" p                    <div class="layui-input-inline" style="width: 30%;">( H! l: y5 R' ^" C
                        <select name="credits">2 k( c" D8 |. g( _) v; M2 [& N. m
                            {$plugin_config['credits']}9 d% i3 F3 C* k  n# K1 `4 M7 i5 p
                        </select>
1 T3 I7 X+ E7 x, Q- F                    </div>
' C1 n7 H5 k! T: \                    <div class="layui-form-mid layui-word-aux">6 f! e! m; {  E* x9 j! z) d
                        內置選擇積分類型。
; z$ ~5 N, I# U  d* h                    </div>
+ f- c0 n4 p& r  {2 G( w                </div>  M( {. F1 v& G7 n
                <div class="layui-form-item adminj-sort-item" style="width: 100%;">4 e; J$ E: e" d
                    <label class="layui-form-label" style="margin-top: -3px;">
. v" G6 e$ x2 r& j                        選擇會員組( H$ j5 {2 q' F8 f" D. }
                    </label>
! ]+ q( U# p3 X1 }  [: e5 z                    <div class="layui-input-inline" style="width: 30%;">
1 o$ H$ e7 t# \: F                        <select name="groupids" lay-ignore="" class="layui-select-group layui-select-tips"! g5 x: Q; M) [; l) a: g
                            multiple="multiple" data-placeholder="" data-dropdown-css-class="select2-purple"
+ K" X( x) m$ i3 U/ K( E4 M3 b2 y                            style="width: 99%;height: 200px;">: m! d0 b6 u% [7 G% j9 c# k+ H
                            {$plugin_config['groupids']}
# E! f, o$ u9 E                        </select>
& l/ O2 p, I! A0 F* t" y                    </div>
* Y; C) w$ |8 `                    <div class="layui-form-mid layui-word-aux">
% Q) I4 q1 p% C                        內置選擇會員組。* ~% R2 Z! H+ _% U% {9 R" h
                    </div>
+ L2 t) v9 p1 M' s                </div>+ Y0 D3 x! g* r6 z! e- [
                <div class="layui-form-item adminj-sort-item">3 l' Q2 S# n3 x/ Q8 E7 T! I9 x
                    <div class="layui-input-block">8 R' Y! i+ u' G1 a
                        <button type="submit" class="layui-btn" lay-submit="" lay-filter="postButton" id="postButton">
5 u' C( j' x& L0 _  X) ~                            立即修改+ H) d* C/ u% F. f& z& I
                        </button>0 J3 X4 J5 L: K
                    </div>, u) G$ G2 s' v4 _
                </div>
& S( W! x# `, r" Z            </div>
% J2 s0 F5 e# _: r  x        </div>6 H% X: e8 e& c; W! D0 g
    </div>; b9 P3 Q7 R) p* J5 N5 }1 X+ U+ N
    <script src="/source/plugin/xinxiuvip_network/template/res/layui/layui.js?t=1"></script>
) D# l6 a+ e  G6 ~4 q3 n. x& c. Q# ?5 t' y$ c* a( `2 ~
$ }& d. Y3 T6 r' U( S
    <script>
; z1 S, I! d& o        layui.use(['form', 'layer', 'jquery'], function () {
+ a' H$ o0 K1 @8 x2 L0 B: w/ }            var form = layui.form;
+ `# G" G, R- w. u            var layer = layui.layer;
: U7 B2 m+ ^- P( O0 _) I            var $ = layui.jquery;+ c' J% B3 Y  O' j- O$ H6 b
            var laydate = layui.laydate;6 b9 b. C* R2 U; S8 A# R

! z+ r4 B4 a( g: U            laydate.render({$ E- \0 E+ G: K
                elem: '#form-date',
$ S2 P2 u: \: m  P7 p5 |- l) T                type: 'datetime',2 Z* @: ~' U' j2 L+ G' P
                fullPanel: true // 2.8+
* a' ~' v1 K" F1 f0 F            });2 n2 z  A2 d, n& J6 S7 |& `9 [# s: H
2 j4 m, W* U# e7 `, V1 d
            form.on('submit(postButton)', function (data) {( w+ @9 ?, R) ]8 M5 p
                function getQueryParam(param) {
- Z% z/ S5 f- D* n; F                    const search = window.location.search || window.location.hash.split('?')[1] || '';/ S6 L2 y! A- l1 a0 \- V. _* B
                    const params = new URLSearchParams(search);% |8 V+ x$ h3 b, v1 m/ s
                    return params.get(param);
( @! b9 P1 f% y$ c. _                }
: K4 L- x- t4 }: p/ M' K0 U/ s                const dir = getQueryParam('dir');
4 C0 q3 {+ e- z* z2 t                $.post('plugin.php?id=xinxiuvip_network_plugin:web_admin&action=api&dir=' + dir, {$ |6 v! T- [2 m& R2 `+ |
                    data: data.field,0 F7 ]8 @. s- r5 G" v! p  \9 {
                }, function (jsondata, textStatus, jqXHR) {
" {/ F" b  G& l! U% M                    if (jsondata.code === 200) {5 Q# v# l$ H  ~; o" W6 B* H) f
                        layer.msg('[ ' + dir + ' ] 插件設置成功!', {
' Y6 N0 N6 L: Q3 f* L                            icon: 15 O! R  j" ~8 a# d: m: `7 j. u" f
                        });4 g7 Q' v8 T) S3 a, z( P& F2 }
                    } else {
& v& O: c5 ?0 o2 W5 k                        layer.msg('[ ' + dir + ' ] 插件設置失敗!', {
6 K2 J4 N3 A# l                            icon: 2
. K7 X$ o4 B& t' c0 T# b                        });) D5 j5 ~7 k4 v. R* @/ \9 z$ r
                    }
3 J+ t% J, _# e. b9 b  H% X+ y                    return false;3 n! ~% \  \/ D1 E* M2 V+ Q
                });+ \- u7 y" q' @9 g* _6 d  ^

; P+ T# ?0 i1 A- {5 q3 S            });
" I. P. u. @% h+ f3 k% w' ?* C        });( @) s( g- M& {
    </script>9 O+ Z2 ^% T7 D
</body>9 K  k6 H: v& P9 q! m. q
8 f7 n% }  Z; ~, t
</html>0 Z2 |9 p# M! F( z" I
: H/ [/ p0 k1 U. x/ S/ p
extend_network.php插件安裝卸載配置實例
[PHP] 純文本查看 復制代碼
<?php
( h, _  k, a8 Z
, q" R! z" f$ Jif (!defined('IN_DISCUZ')) {
4 J5 r: G$ U5 d/ n    exit('Access Denied');- T3 Y' D- t0 _- ]
}
# p4 n, U/ G$ e+ b: u8 e3 M# O
0 s7 o0 ^" U2 XC::import('class/plugin', 'plugin/xinxiuvip_network_plugin', false); //引入系統核心類
2 ~- P# K* O/ ?) @; H8 l, G, Q% {( \; x
class extend_network extends class_plugin! m! l* O$ g. i7 ], _$ |# Q- K
{- R2 ^0 t. F7 S) t# |
1 h; j5 `$ L- Y0 Q! H
    public function __construct() //構造方法
9 L9 ?8 y) @, U  ~    {
6 m* }- q# S( s, r        parent::__construct(false);
& s3 T) M( Z0 g' z    }
6 ?# }, A# u& \: Q9 F) s5 l" n& p! `    /**
# y* C- u( a2 x: F% A- ~$ a     * ##創建插件的安裝代碼
4 M: F8 [& K. I     * 1、此處代碼以創建數據庫表為主,提前創建插件需要的數據庫表及字段!
1 b/ Q; y; V3 N- z9 |: v7 S9 _/ F4 w9 v     * 2、在這里也可以添加一些插件自定義php代碼,系統自動執行!
5 T; |5 x0 _3 p) ^0 @     * 3、如果不需要執行代碼,直接返回true即可,實例:return true;! j4 u( x/ C8 q# i* M
     */
) r- E) E/ R6 u# H( n! G$ b. d    public function hook_plugin_install() //插件安裝代碼9 I+ ?* L) Q0 U7 B7 p% e- A3 ^
    {( y2 ~/ N( u7 U  ~! @) f
        $sql = <<<EOF
1 c7 {, Q( O7 U7 n- p8 u        CREATE TABLE IF NOT EXISTS `pre_xinxiuvip_plugin_ip` (
- z8 \4 K( ]% g( L( i          `id` BIGINT(16) unsigned NOT NULL AUTO_INCREMENT,3 X* Q0 A& e3 p) N2 u, h! s
          `text1` longtext NOT NULL,4 X2 k) c5 O' ~* {' W+ Q, h
          PRIMARY KEY (`id`)
5 O' [' n/ l9 @: |        ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;
% ?+ y' e( ~2 a  l9 g* ~, s& jEOF;7 V% H, T9 K7 H( G
        $sql ? web_mysql::xinxiuvip_plugin_run_sql($sql) : ''; //執行上面的多行SQL代碼;
0 o8 k! A- v  h5 G! o        return true; //創建結束9 Z; h6 `+ S& U/ u- o1 }
    }
4 i& B3 L; m% T  Z9 G# k0 `+ J    /**& C, ^0 w9 I  I" R: e
     * ##更新插件的更新代碼; V; W; v; w# w8 E2 \' i' G
     * 1、此處代碼以更新數據庫表為主,對安裝的數據庫表和字段進行更新!
$ v: e4 |& l% v- B, T! |# ^     * 2、在這里也可以添加一些插件自定義php代碼,系統自動執行!
6 m( }  A) {& V, a" l     * 3、如果不需要執行代碼,直接返回true即可,實例:return true;
8 v: u, J$ }$ L3 E: C# ~- j" Y+ @     */  M% e( R. n* s
    public function hook_plugin_upgrade() //插件更新代碼
! G/ d+ Y; Q9 `    {
" r: Y  y% U4 ~- F- ^2 o( R  k, Y        $sql = <<<EOF
: B: F' ^. B6 W6 t& a! d8 X: S        CREATE TABLE IF NOT EXISTS `pre_xinxiuvip_plugin_ip` (
9 y$ S. K3 f0 y. J5 u+ x( N: N* @  s          `id` BIGINT(16) unsigned NOT NULL AUTO_INCREMENT,; u4 ^2 Q1 u: [* [$ ?" J
          `text1` longtext NOT NULL,$ s! A2 A* g2 o9 m
          PRIMARY KEY (`id`)
$ y0 Q- B. h( ^7 E( r        ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;
' z3 S# ^1 [2 N9 aEOF;5 d; O) @1 O: W& R' O
        $sql ? web_mysql::xinxiuvip_plugin_run_sql($sql) : ''; //執行上面的多行SQL代碼;
, q' ?4 l$ V. N3 [1 ?+ E. V        return true; //更新結束- B+ c1 m5 Z6 R2 f8 r  j. N2 I
    }: i1 T( ^7 W' M
    /**
& c: c. O, Y* k# ^     * ##卸載插件的卸載代碼% X9 k4 d2 m% L, W* y  x8 B( d: {) @
     * 1、此處代碼以卸載數據庫表為主,對安裝的數據庫表和字段進行卸載!; p5 B3 k- F9 a/ f) `- x! I
     * 2、在這里也可以添加一些插件自定義php代碼,系統自動執行!
4 t' M  a7 K7 Q0 b     * 3、如果不需要執行代碼,直接返回true即可,實例:return true;1 l$ g* \4 V: _2 t! O# J; a
     */
6 n% e8 |; E: ~* G( m# h    public function hook_plugin_uninstall() //插件卸載代碼
6 _( ^, v% o: j* z, h$ ?    {+ n  [% @+ B( Y) U& i
        $sql = <<<EOF( F5 @, `3 a) u
        DROP TABLE IF EXISTS `pre_xinxiuvip_plugin_ip`;* @8 e  A. r! ~! i5 |
EOF;5 ~& o1 y4 v; P- C
        $sql ? web_mysql::xinxiuvip_plugin_run_sql($sql) : ''; //執行上面的多行SQL代碼;: u$ o6 q4 E/ o. b
        return true; //更新結束
0 b- a% h8 Y0 q2 p* t& e! q) F3 q    }
3 O6 L% q5 k' ]( Y4 ]    /**
; S2 V. D, b  g( L  M  S! H+ ]0 G( j     * ##安裝插件的接口代碼- ]/ v) }# @4 O* p
     * 1、此處代碼以添加插件接口為主,對插件封裝的接口,添加到數據庫!( C% v5 \, _0 x; P
     * 2、如果不需要添加任何接口信息,直接返回false即可,實例:return false;
; ^# A2 }* S! W4 A7 r+ }5 w" m; i     */
4 n' E. M" D8 x) g! U    public function hook_plugin_actions_install() //插件安裝接口代碼
" Q. \4 F  }- }; n9 f9 W% D    {( g# K2 C- m$ }2 J- }
        $actions_array = array(
1 E$ y' c3 d/ |) z" `            array(
7 _3 ~* W4 P+ W; z                'type' => 'ip模塊',//插件模塊
# ?, L4 z$ W0 J# v6 O                'name' => '查詢ip地址',//接口名稱
; Y7 Y% g$ y- O% ^. W                'actions' => 'ip_cha',//接口方法) d) R8 v' p$ s, W- r
                'url' => 'http://www.5566wy.com/thread-556-1-1.html',//接口文檔% a: C, s& \5 S0 H
            ),
0 U& M( `3 r- \1 s4 p            array(
9 E$ w- G' n, I' G; J! p                'type' => 'ip模塊1',//插件模塊9 H- o4 C$ T! }. X) S3 C  a
                'name' => '查詢ip地址1',//接口名稱
+ a4 X3 U$ {7 p- r1 U4 q+ i                'actions' => 'ip_cha1',//接口方法! S% C4 _# N1 a; g+ H
                'url' => 'http://www.5566wy.com/thread-556-1-1.html',//接口文檔. U3 g* s  Y9 |* m& |8 F
            ),
3 I* V" Z: i- W8 p# X- _% r# P; b8 R        );9 @: F; f9 r6 I  S) C8 H
        return $actions_array;
6 m2 W: e6 r+ B/ R  P3 i# `) @    }. m) X; B5 R& ^$ W
    /**
6 f' y: ?- h+ u, r0 f& z  }     * ##更新插件的接口代碼5 \) E  g3 z0 o+ ^& B* q, U
     * 1、此處代碼以更新插件接口為主,對插件封裝的接口,更新到數據庫!
' s7 B6 F7 {, m! z     * 2、如果不需要更新任何接口信息,直接返回false即可,實例:return false;% x1 p: i+ _$ i( f; V" o
     */
' v) y' h6 |9 X1 m( S$ I    public function hook_plugin_actions_upgrade() //插件接口更新代碼  l6 F% Q: t* H4 M( {+ j3 z0 V3 l. O
    {
+ @( D6 H0 b1 M5 [        $actions_array = array(
; @; T) ]! _1 i1 ^9 B            array(6 i7 M. F6 ^) F  @8 `& c5 \( v+ A
                'type' => 'ip模塊2',//插件模塊  R  b1 a# f. h9 l9 o
                'name' => '查詢ip地址2',//接口名稱! X9 ~, v$ o, i& a+ D* B  ~# q
                'actions' => 'ip_cha2',//接口方法. I* g- K7 l4 I5 r5 f1 U
                'url' => 'http://www.5566wy.com/thread-556-1-1.html',//接口文檔
8 x# F; b  y) n- P! c6 \            ),
2 y3 N) w8 O4 h        );3 X$ \/ P9 ~) B
        return $actions_array;
7 d; n% A, K. G  F" g    }" H! @+ @, y1 D3 q* ]  U; Q2 u
}
# \0 X* ?. [& x/ T$ D$ j
: S2 @& U  i3 E7 H





歡迎光臨 新秀網絡驗證系統 (http://www.5566wy.com/) Powered by Discuz! X3.5
国产精品爱啪在线线免费观看_97视频精品_欧美精品一区二区在线播放_国产欧美久久一区二区三区
黑人巨大精品欧美一区| 女同一区二区| 5566中文字幕一区二区电影| 国产一区亚洲| 久久午夜国产精品| 色素色在线综合| 欧美日本亚洲| 韩日欧美一区二区三区| 一区在线播放视频| 欧美在线观看视频一区二区| 国产精品激情| 国产91精品免费| 日韩不卡免费视频| 中文字幕制服丝袜成人av| 欧美一区二区日韩| 久久久久网址| 一区在线视频观看| 春色校园综合激情亚洲| 午夜精品久久久| 国产欧美精品一区二区三区四区| 欧美性生活影院| 99热精品在线| 欧美久久久久| 成人综合婷婷国产精品久久免费| 亚洲国产婷婷综合在线精品| 色婷婷精品大视频在线蜜桃视频| 欧美成人蜜桃| 粉嫩久久99精品久久久久久夜| 三级久久三级久久| 日韩久久一区二区| 精品国产91亚洲一区二区三区婷婷| 在线一区二区三区四区五区| 一区二区高清| 欧美日韩一区二区视频在线 | 国产成人综合视频| 午夜av电影一区| 亚洲欧洲精品成人久久奇米网| wwww国产精品欧美| 欧美日本不卡视频| 久久久久se| 一区二区三区欧美成人| 国产精品国产三级欧美二区| 99精品视频在线观看| 国产一区二区日韩精品| 日本不卡高清视频| 日韩欧美国产午夜精品| 欧洲精品中文字幕| 久久久久久亚洲精品不卡4k岛国| 99热这里只有成人精品国产| 国产精品高清一区二区三区| 99久久国产综合精品麻豆| 国产一区 二区| 青娱乐精品视频在线| 亚洲一区二区在线免费看| 亚洲视频香蕉人妖| 国产日韩一级二级三级| 精品久久五月天| 欧美一区二区三区四区五区 | 精品一区中文字幕| 日韩中文字幕麻豆| 亚洲香肠在线观看| 一区二区三区在线视频免费观看| 国产精品国产精品国产专区不片| 久久综合九色欧美综合狠狠| 欧美一级日韩一级| 欧美日韩黄色一区二区| 影音先锋久久资源网| 欧美在线高清| 91视频国产资源| 99re热视频这里只精品| 99免费精品在线观看| 成人免费看视频| 国产一区二区91| 激情久久五月天| 另类综合日韩欧美亚洲| 蜜臀va亚洲va欧美va天堂| 日本aⅴ精品一区二区三区| 日本成人在线一区| 日本vs亚洲vs韩国一区三区二区| 天天综合日日夜夜精品| 视频一区中文字幕国产| 日日嗨av一区二区三区四区| 性做久久久久久久免费看| 亚洲高清在线精品| 日韩不卡手机在线v区| 日本不卡一区二区| 亚洲女女做受ⅹxx高潮| 亚洲女爱视频在线| 一区二区三区高清在线| 亚洲成人免费av| 欧美国产一区视频在线观看| 国产精品久久久久一区二区三区| 中文字幕一区免费在线观看| 中文字幕一区不卡| 亚洲激情网站免费观看| 亚洲一级二级三级在线免费观看| 亚洲一二三级电影| 日欧美一区二区| 麻豆国产91在线播放| 国产一区二区三区在线观看免费视频| 国产河南妇女毛片精品久久久| 国产乱对白刺激视频不卡| 成人晚上爱看视频| 91丨porny丨国产| 韩日精品在线| 国产精品欧美日韩一区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 日韩精品一区国产麻豆| 久久亚洲免费视频| 亚洲欧洲一区二区三区| 亚洲福利一二三区| 蜜桃免费网站一区二区三区| 国产精品69毛片高清亚洲| 日韩**一区毛片| 国产精品99久久不卡二区| 9l国产精品久久久久麻豆| 激情自拍一区| 亚洲欧美国产精品桃花| 欧美午夜一区二区三区| 2021中文字幕一区亚洲| 中文字幕亚洲不卡| 亚洲五码中文字幕| 狠狠色综合播放一区二区| jizz一区二区| 一区在线视频观看| 久久中文在线| 欧美一区二区三区四区久久| 国产精品久久久久久久第一福利 | 亚洲久色影视| 在线免费不卡电影| 欧美一区二区在线视频| 久久综合99re88久久爱| 成人欧美一区二区三区视频网页| 香港成人在线视频| 国产成人在线电影| 国产综合色产| 欧美日产一区二区三区在线观看| 99精品免费| 欧美日本免费一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w | 久久都是精品| 4hu四虎永久在线影院成人| 国产午夜三级一区二区三| 亚洲一区二区三区小说| 国产精品2024| 亚洲午夜极品| 日本精品一级二级| 2020国产精品自拍| 午夜电影网亚洲视频| 成人性色生活片免费看爆迷你毛片| 黄色成人精品网站| 欧美亚洲日本国产| 国产农村妇女毛片精品久久麻豆| 午夜精品福利视频网站| 成人一区在线观看| 夜夜精品视频| 欧美一区中文字幕| 欧美一区二区播放| 亚洲日本中文字幕区| 精久久久久久久久久久| 欧美连裤袜在线视频| 日本韩国欧美三级| 国产亚洲短视频| 丝袜美腿成人在线| av爱爱亚洲一区| 久久久久久久久久久一区| 26uuu久久综合| 亚洲国产日韩一级| 成人国产一区二区三区精品| 亚洲在线电影| 久久一区二区视频| 日韩中文字幕不卡| 欧美精品九九| 欧美精品丝袜久久久中文字幕| 国产精品传媒在线| 国产精品影视在线观看| 国产日韩欧美| 欧美精品一区二区精品网| 午夜精品久久久久久久| 欧美xxx在线观看| 欧美日韩你懂的| 亚洲欧美国产毛片在线| 粉嫩在线一区二区三区视频| 免费精品视频| 久久免费美女视频| 久久精品国产精品亚洲红杏| 国产真实乱偷精品视频免| 亚洲性感激情| 日韩欧美一二三四区| 三级在线观看一区二区 | 亚洲欧美日韩国产一区二区三区| 精品中文字幕一区二区| 伊人精品成人久久综合软件| 日韩三级精品电影久久久| 亚洲国产成人精品视频| 欧美aa国产视频| 欧美综合77777色婷婷| 日本一区二区三区四区| 国产一区二区三区观看| 久久黄色网页|