前些日子我写了关于极验验证的注册页面的代码修改教程,但是当时只有注册页面的代码,因为登录、评论、找回密码这几项当时都没有能够琢磨出来,但是这次经过查阅许多wordpress的相关文档,和比对其他的验证码插件,以及查看了多个wordpress的主题文件,根据其中的相关代码的解读,之后发现了可以解决问题的方法,其实也很简单。

本站效果图如下:
极验验证:Wordpress登录页面手工添加验证码完美教程 免安装插件

下面我们开始修改wordpress的代码,这里我需要修改的是wordpress主题文件中名为functions.php的PHP文件,其实也很简单。

关于极验验证验证码的文件可以在WordPress免插件手工添加新用户注册页面验证码(极验验证)教程中找到下载网址。

好了废话不多说,先备份好要修改的文件,防止修改的时候出现错误或者覆盖了原文件出现错误无法恢复。

打开functiongs.php文件,然后添加如下两部分代码

//加载显示验证码

// WordPress 注册表单添加验证问题  
function add_security_question() {  
    ?>  
    <p>  
    <?php  
    require_once("class.geetest.php");  
    $geetest = new Geetest();  
    $geetest->set_captchaid("你在极验验证申请到的ID");  
    if ($geetest->register()) {  
    echo $geetest->get_widget("float");//若采用弹出式,要添加第二个参数(提交按钮的id)  
    } else {  
        echo "use your own captcha HTML web code!";//这里输出网站原有验证码  
    }  
    ?>  
    </p>  
    <br />  
    <br />  
    <?php  
}  
add_action( 'login_form', 'add_security_question' );  

加载验证码部分的代码和注册页面的加载验证码代码是一致的,因此,如果你已经添加了此处的代码,则可以此部分代码前面或则后面加上一句add_action( ‘login_form’, ‘add_security_question’ );即可。

//验证验证码正确性
add_action('wp_authenticate_user', 'add_login_security_question_validate',10,3);
function add_login_security_question_validate($user_login) {
    require_once("class.geetest.php");
    $geetest = new Geetest();
    $geetest->set_privatekey("你在极验验证申请到的KEY");
    if (isset($_POST['geetest_challenge']) && isset($_POST['geetest_validate']) && isset($_POST['geetest_seccode'])) {
        $result = $geetest->validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode']);
        if ($result == TRUE) {
            //echo 'Yes!';
        } else if ($result == FALSE) {
            return new WP_Error( 'incorrect_password', '<strong>错误</strong>: 请将拼图滑倒正确位置。'  );
        } else {
            echo 'FORBIDDEN';
        }
    } else {
        return new WP_Error( 'incorrect_password', '<strong>错误</strong>: 请将拼图滑倒正确位置。'  );
        //echo "use your own captcha validate ";
        //网站原有验证码的验证
        //$result = your_own_captcha_validate()
    }
     //do any extra validation stuff here
     return $user_login;
}

替换好代码就可以上传覆盖原文件了,然后打开看看效果吧!


发表评论

电子邮件地址不会被公开。 必填项已用*标注