Emlog制作极验系统插件详细教程附代码

一、准备工作

在开始制作极验系统插件之前,请确保你已经拥有极验的账号,并且已经获取到了验证网站所需的ID和KEY。

二、插件文件创建

  1. 创建插件文件夹和主文件

    /content/plugins/目录下创建一个新的文件夹,比如命名为geetest,并在该文件夹中创建一个主文件geetest.php

  2. 编写插件主文件

    geetest.php文件中,按照以下格式编写插件代码:

    <?php
    /* Plugin Name: 极验系统
    Version: 1.0
    Description: 集成极验验证系统,增强站点安全性。
    Author]
    Author URL: [你的网站]
    */
    
    !defined('EMLOG_ROOT') && exit('access deined!');
    
    function geetest_init() {
       define("CAPTCHA_ID", "你的ID");
       define("PRIVATE_KEY", "你的KEY");
       require_once EMLOG_ROOT . '/include/lib/class.geetestlib.php';
    
       session_start();
       $user_id = "test"; // 用户ID,可以根据实际情况修改
       $GtSdk = new GeetestLib(CAPTCHA_ID, PRIVATE_KEY);
       $status = $GtSdk->pre_process($user_id);
       $_SESSION['gtserver'] = $status;
       $_SESSION['user_id'] = $user_id;
       echo $GtSdk->get_response_str();
    }
    
    function geetest_validate() {
       $GtSdk = new GeetestLib(CAPTCHA_ID, PRIVATE_KEY);
       $user_id = $_SESSION['user_id'];
    
       if ($_SESSION['gtserver'] == 1) { // 服务器正常
           $result = $GtSdk->success_validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'], $user_id);
           if (!$result) {
               echo '验证失败';
               exit;
           }
       } else { // 服务器宕机,走failback模式
           if (!$GtSdk->fail_validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'])) {
               echo '验证失败';
               exit;
           }
       }
    }
    
    addAction('save_log', 'geetest_validate'); // 在保存日志前进行验证
    addAction('adm_main_top', 'geetest_init'); // 在后台顶部加载极验验证

三、下载极验SDK并配置

  1. 下载极验SDK

    访问极验的GitHub项目地址,找到class.geetestlib.php文件,并将其下载到/include/lib/目录下。

  2. 配置SDK

    /include/lib/class.geetestlib.php文件的顶部,添加以下代码以定义CAPTCHA_ID和PRIVATE_KEY:

    <?php
    define("CAPTCHA_ID", "你的ID");
    define("PRIVATE_KEY", "你的KEY");

四、修改评论控制器

/include/controller/comment_controller.php文件中,找到处理评论提交的部分,并在提交前调用极验验证函数。例如:

doAction('comment_post');

// 添加极验验证
require_once EMLOG_ROOT . '/include/lib/class.geetestlib.php';
$GtSdk = new GeetestLib(CAPTCHA_ID, PRIVATE_KEY);
$user_id = $_SESSION['user_id'];

if ($_SESSION['gtserver'] == 1) { // 服务器正常
    $result = $GtSdk->success_validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'], $user_id);
    if (!$result) {
        emMsg('评论失败: 请正确滑动滑块验证码');
        exit;
    }
} else { // 服务器宕机,走failback模式
    if (!$GtSdk->fail_validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'])) {
        emMsg('评论失败: 请正确滑动滑块验证码');
        exit;
    }
}

// 继续处理评论提交...

五、完成插件

至此,你已经完成了极验系统插件的基本制作。接下来,你可以在Emlog后台的插件管理中启用该插件,并在需要验证的地方(如评论提交)测试其效果。

请注意,以上代码仅为示例,可能需要根据你的实际需求和Emlog的版本进行调整。同时,确保你已经正确配置了服务器的PHP和MySQL环境,以满足Emlog的运行要求。