WordPress 后台登录页面添加数学题验证码
//后台登陆数学验证码部分
function mx_add_login_fields() {
//获取两个随机数, 范围0~9
$num1=rand(0,9);
$num2=rand(0,9);
//最终网页中的具体内容
echo "<p><label for='math' class='small'>验证码</label><br /> <input type='text' name='sum' placeholder='$num1 + $num2 = ?' class='input' value='' size='25' tabindex='4'>"
."<input type='hidden' name='num1' value='$num1'>"
."<input type='hidden' name='num2' value='$num2'></p>";
}
add_action('login_form','mx_add_login_fields');
function mx_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','mx_login_val');

wordpress给注册页面添加数学题验证码
// WordPress 注册页面添加了数学验证码功能部分
function add_registration_fields() {
// 获取两个随机数, 范围0~9
$num1 = rand(0, 9);
$num2 = rand(0, 9);
// 最终网页中的具体内容
echo "<p><label for='math' class='small'>验证码</label><br />";
echo "<input type='text' name='sum' placeholder='$num1 + $num2 =?' class='input' value='' size='25' tabindex='4'>";
echo "<input type='hidden' name='num1' value='$num1'>";
echo "<input type='hidden' name='num2' value='$num2'></p>";
}
add_action('register_form', 'add_registration_fields');
function validate_registration($errors, $sanitized_user_login, $user_email) {
$sum = isset($_POST['sum']) ? $_POST['sum'] : ''; // 用户提交的计算结果,确保处理未设置的情况
$num1 = $_POST['num1'];
$num2 = $_POST['num2'];
if (empty($sum)) {
$errors->add('empty_captcha', '错误: 请输入验证码。');
} elseif ((int)$sum !== $num1 + $num2) {
$errors->add('incorrect_captcha', '错误: 验证码错误,请重试。');
}
return $errors;
}
add_action('registration_errors', 'validate_registration', 10, 3);
