通常,如果防护措施没有做好,WordPress后台就很容易被机器人穷举登录 [aru_4]。服务器的防护、优化通常是无法防住机器人的 [aru_11]。但是,我们可以添加人机验证来防护。
使用方法
复制代码并粘贴到 functions.php 的最后即可。[aru_115]
加法验证码
这是最常见的验证码。网上一搜一大把。为了方便大家,我也提供一段代码:
//后台登陆数学验证码 function myplugin_add_login_fields() { //获取两个随机数, 范围0~9 $num1=rand(0,9); $num2=rand(0,9); //最终网页中的具体内容 echo "<p><label for='math' class='small'>验证码</label><br /> $num1 + $num2 = ?<input type='text' name='sum' class='username' value='' size='25' tabindex='4'>"."<input type='hidden' name='num1' value='$num1'>"."<input type='hidden' name='num2' value='$num2'></p>"; } add_action('login_form','myplugin_add_login_fields'); function login_val() { $sum=$_POST['sum'];//用户提交的计算结果 switch($sum){ //得到正确的计算结果则直接跳出 case $_POST['num1']+$_POST['num2']:break; //未填写结果时的错误讯息 case null:wp_die('错误:请输入验证码。');break; //计算错误时的错误讯息 default:wp_die('错误:验证码错误,请重试。'); } } add_action('login_form_login','login_val');
按钮验证码
这才是这次要讲的重点。看我的题目就知道。废话不说,上代码。
//添加按钮验证 function add_button() { echo '<label for="TencentCaptcha" class="small">人机验证</label><br><input type="hidden" name="clicked" id="hiddenvar" value="no"><input type="button" onclick="button_done()" class="button button-primary" value="点击验证" id="btdone" style="float:none;width:100%">'; echo '<link href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css" rel="stylesheet"><script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>'; echo '<script>function button_done(){swal({title:"验证成功",text:"验证成功!",type:"success",confirmButtonText:"确定"});document.getElementById("btdone").disabled=true;document.getElementById("btdone").value="您已经通过验证~";document.getElementById("btdone").innerHTML="disabled";document.getElementById("hiddenvar").value="yes";}</script>'; } add_action('login_form','add_button'); function check_button() { if($_POST['clicked']=='no') { wp_die('错误:验证错误或尚未验证,请重试'); } } add_action('login_form_login','check_button');
效果预览
效果预览本篇完。[aru_42]
本文作者为Blogych,转载请注明。