极验验证:Wordpress登录页面手工添加验证码完美教程 免安装插件

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

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

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

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

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

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

/———————–下面是正式代码部分——————————
//加载显示验证码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 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’ );即可。

//验证验证码正确性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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;
}

—————————-代码到此结束——————————–/
替换好代码就可以上传覆盖原文件了,然后打开看看效果吧!