找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 706|回复: 0

[内置扩展] Discuz 验证扩展【X3.5】 二次开发 - 在线手册

[复制链接]
发表于 2024-3-22 19:22:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
验证扩展二次开发

本扩展由PHP+MYSQL语言开发,通过内嵌在新秀网络验证系统HOOK钩子,在正常API接口执行时自动调用,不需要扩展时无需设置。

1、验证扩展是结合新秀网络验证系统进行的二次开发,不能独立使用;

2、验证扩展开发遵循Discuz、新秀网络验证、PHP语言规范开发;

3、验证扩展适用于新秀网络验证系统3.5ver1.1版本以后;

4、本功能与新秀网络验证系统,代码相互独立,但功能同时执行;

5、验证扩展开发可使用Discuz内置函数、新秀网络验证内置函数、PHP函数等。

适用环境:php版本>5.6、Mysql版本>5.5以上、Discuz版本>3.5。

= Discuz资料库  = Discuz插件开发文档  = 开发交流  =  BUG反馈  =  QQ客服:3188639  QQ交流群:281079920


二次开发常用函数

1、DB数据库操作函数    /*常用MYSQL数据库操作命令,增、减、改、查功能函数。*/

2、新秀网络验证数据库对照表    /*新秀网络验证系统内部,所有数据库表及说明*/

3、Discuz官方数据库对照表  /*Discuz官方数据库表,包括discuz、UCente数据库字典。*/

4、Discuz基础框架、类、函数    /*包含Discuz官方基础框架、类、函数、方法使用说明。*/

5、新秀网络基础框架类、函数    /*包含新秀网络验证基础框架、类、函数、方法使用说明。*/

6、PHP在线手册    /*PHP官方原生态语法、类、库手册。*/


验证扩展开发视频教程

新手入门教程 链接:http://www.xinxiuvip.com/plugin.php?id=it618_video:product&pid=2


验证扩展开发开发示例

1、获取版块主题API更改返回值 点击访问


使 用 简 介

1、下载安装3.5ver1.2以上新秀网络验证系统:点击下载

2、安装完成后,在后台点击插件 —> “验证扩展”页面

3、根据内置扩展开发说明,进行开发即可,完成后直接保存。

QQ截图20240322193530.png

4、内置扩展文件目录说明

Discuz论坛系统内绝对路径:\source\plugin\xinxiu_network\extend\extend_network.php

xinxiu_network \\新秀网络验证系统插件主目录

—extend \\内置扩展存放目录

——extend_network.php \\验证扩展开发文件 (即:后台“验证扩展”页面内编辑的文件)

5、如何安装、开发、调试?

#1、下载新秀网络验证文件后,自带扩展文件,无需额外下载。

#2、使用PHP代码编辑软件或后台验证扩展页面,对扩展文件 extend_network.php 进行开发,注意:UTF8及GBK编码问题。【开发者必须具备基础以上PHP语言水平】

#3、如需新增方法类时,请不要与Discuz通用函数类、新秀验证框架通用函数类、PHP语言通用函数类冲突,否则无法使用,开发调试时请做好数据库备份

#4、根据扩展开发文档开发,不想使用某一个钩子功能时代码进行注释即可,无需删除代码:

       单行注释:在代码行前输入: //   双斜杠即可。

       多行注释:在代码块上下输入: /* 注释代码行 */  即可。


验证扩展 开发 源文件 extend_network.php
[PHP] 纯文本查看 复制代码
<?php
    /*
     技术支持 QQ:3188639 QQ交流群:281079920
     官方网站 [url=http://www.xinxiuvip.com/]http://www.xinxiuvip.com/[/url]
     获取授权 [url=http://www.xinxiuvip.com/plugin.php?id=xinxiu_license:accredit]http://www.xinxiuvip.com/plugin.php?id=xinxiu_license:accredit[/url]
     扩展开发手册 [url=http://www.xinxiuvip.com/forum.php?mod=viewthread&tid=432]http://www.xinxiuvip.com/forum.php?mod=viewthread&tid=432[/url]
     严禁反编译、逆向等任何形式的侵权行为,违者将追究法律责任!
    */
if(!defined(\'IN_DISCUZ\')) {
exit(\'Access Denied\');
}

C::import(\'class/client\',\'plugin/xinxiu_network\',false);//引入系统核心类

class extend_network extends class_client{

    public $config;//可自定义变量,在构造方法中设置变量值。

    public function __construct()//构造方法
    {
        $this->config = xx_G::xinxiu_network();//获取新秀网络插件配置信息
        parent::__construct(false);//禁止删除或更改
    }

    //内置扩展代码区域
}

验证全局hook嵌入点实例
[PHP] 纯文本查看 复制代码
   /**
             * 全局hook特定的类钩子操作
             * 此函数调用`hook_xinxiuvip`钩子,允许在特定的程序点插入自定义逻辑。
             * 它接受一个包含`$_GET`变量和当前配置的数组作为参数,以便在钩子函数中使用。
             * @param string $get_array传递所有当前GET数据
             * @param array $config 传递插件配置信息
             */
    public function hook_xinxiuvip($get_array,$config){
    var_dump($get_array,$config);
    }

URLS参数加密传输代码实例
[PHP] 纯文本查看 复制代码
    public function hook_urls($function,$action,$urls){
        /**
         * 高级自定义,参数传输urls解密处理功能
         * 如果参数中带有&urls参数,就会调用此功能
         * @param string $function 接口模块
         * @param string $action 接口方法
         * @param string $urls 接口密串
         * 无需返回值,直接处理json返回
         */
         //将加密的密文串进行解密还原
        $str = base64_decode($urls);
         //将解密还原的密文串,重新按明文api接口进行组装
        $geturl = $_SERVER[\'SERVER_NAME\'].\'/plugin.php?id=\'.$function.\'&action=\'.$action.$str;
        $outp = xx_curl::get_url($geturl);//利用内置的api接口get方法进行访问
        exit($outp);//退出,并返回数据
    }

传输、管理密钥自定义代码实例
[PHP] 纯文本查看 复制代码
    public function hook_apikey($key,$salt,$apikey){
        /**
         * 使用带传输密钥的接口时,触发对传输密钥进行自定义验证!
         * @param string $key 用户提交的传输密钥
         * @param string $salt 后台设置的salt值
         * @param string $apikey 后台设置的传输密钥
         * 接收三个参数,进行判断比对!
         */
        $md5str = md5($apikey.$salt);
        if ($key == $md5str){//判断是否相等
            return true;
                //正确不做任何处理,跳过系统下一步key逻辑验证。
        }else{
            return false;
                //错误,则进行系统下一步key逻辑验证。也可使用$this->json_output(400,\'返回错误信息\');直接结束。
           
        }
    }
    public function hook_adminkey($key,$salt,$adminkey){
        /**
         * 使用带管理密钥的接口时,触发对管理密钥进行自定义验证!
         * @param string $key 用户提交的管理密钥
         * @param string $salt 后台设置的salt值
         * @param string $adminkey 后台设置的管理密钥
         * 接收三个参数,进行判断比对!
         */
        $md5str = md5($adminkey.$salt);//base64或者RSA、RC4、sha1~
         if ($key == $md5str){//判断是否相等
            return true ;
                //正确不做任何处理,跳过系统下一步adminkey逻辑验证。
        }else{
            return false;
                //错误,则进行系统下一步adminkey逻辑验证。也可使用$this->json_output(400,\'返回错误信息\');直接结束。
        }
    }

所有接口方法、接口参数代码实例
举例:
用户登录接口:http://xxx.com/...&action=login_user&username=demo&password=demo
其中:login_user接口方法  username、password 接口参数
[PHP] 纯文本查看 复制代码
    public function hook_action_login_user($uid,$array_get){//所有接口方法调用
        /**
         * 所有接口方法使用时,触发此操作!调用方式为:“hook_action_+接口方法”,例:hook_action_login_user
         * @param string $uid 用户uid
         * @param array  $array_get 接收用户提交的所有参数及对应值
         * 接收以上两个参数,无需返回值,自动执行系统下一步操作。
         */
        var_dump($uid,$array_get);//输出返回数据
    }
    public function hook_param_username($params,$value){//所有参数调用
        /**
         * 所有接口方法使用时,触发此操作!调用方式为:“hook_param_+参数”,例:hook_param_username
         * @param string $params 接口传输参数username名字
         * @param string $value 接口传输参数username对应的值
         * 接收以上一个参数的值,并返回一个替换的值。return
         */
        //正常情况下用户名是 demo

        $params = base64_decode($value);//如果是BASE64加密,对值进行解密
        return $params;//返回解密结果,替换username参数的值
    }

接口方法执行结束代码实例
[PHP] 纯文本查看 复制代码
   public function hook_exit_login_user($output){//所有接口方法执行结束,记录日志到数据库之前调用
        /**
         * 所有接口方法使用时,触发此操作!调用方式为:“hook_exit_接口方法”,例:hook_exit_login_user
         * @param string $output 执行结果
         * 接收$output参数,无需返回值,如无退出操作,则进行下一步日志入库。
         */
        exit($output);//直接退出,则实现日志不入库。
    }

login_user登录接口代码实例
[PHP] 纯文本查看 复制代码
    public function hook_login_user_start(){//login_user登录接口开始
        /**
         * 用户通过login_user登录前触发
         * 截取提交参数信息$_GET;
         * 具体信息参数解释详见login_user接口文档
         * 无需返回值,不能结束
         */
        var_dump($_GET);
    }
    public function hook_login_user_end($arr){//login_user登录接口结束
        /**
         * 用户通过login_user登录结束后触发
         * 接收返回数据$arr;
         * $arr[0]--用户uid 、$arr[1]--用户名、$arr[2]--用户密码、$arr[3]--用户邮箱;
         * 其中$arr[0]大于 0:返回用户 ID,表示用户登录成功、-1:用户不存在,或者被删除、-2:密码错、-3:安全提问错
         * 无需返回值,不能结束
         */
        var_dump($arr);
    }

login_register注册接口代码实例
[PHP] 纯文本查看 复制代码
   public function hook_login_register_start(){//login_register注册接口开始
        /**
         * 用户通过login_register登录前触发
         * 截取提交参数信息$_GET;
         * 具体信息参数解释详见login_register接口文档
         * 无需返回值,不能结束
         */
        var_dump($_GET);
    }
    public function hook_login_register_end($uid){//login_register注册接口结束
    /**
     * 用户通过login_register登录结束后触发
     * 接收返回数据$uid;
     * 当$uid大于 0:返回用户 ID,表示用户注册成功、-1:用户名不合法、-2:包含不允许注册的词语、
-3:用户名已经存在、-4:Email 格式有误、-5:Email 不允许注册、-6:该 Email 已经被注册
     * 无需返回值,不能结束
     */
        var_dump($uid);
    }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|新秀网络验证系统API ( 豫ICP备2021033257号-1 )

GMT+8, 2024-6-14 00:21 , Processed in 0.190342 second(s), 48 queries , Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表