无论你是WordPress主题研发者还是想要对自己的网站进行二次研发,有时候咱们需要在用户注册、登录的地区添加一个字符照片验证码来阻挡有些设备人暴力破解账户秘码。
WordPress插件仓库里有非常多这般的插件,然则基本上都是针针对WordPress自带的登录或注册表单页面,而针对无运用WordPress自己的注册登录表单,运用主题研发的注册登录功能的时候则安装了插件亦不会有任何效果。
今天咱们来讲讲针针对WordPress主题自带的注册或登录表单模块怎样添加字符照片验证码的功能,下面咱们以在登录表单中添加验证码为示例,注册表单同理。
先上个示例效果演示
创建 captcha.php 字符照片验证码文件
咱们的规律是运用php图像函数 imagecreate () 来创建图像,同期将生成的验证码写入session其中,而后在需要验证的页面中运用。
1、新建一个空白php文件,将下列代码复制到php文件中,保留并命名为captcha.php /**
* 创建字符照片验证码
* @Author Jackie
* @Author url https://www.themeke.com
*/
<?php
session_start();
getCode(4,60,20);
function getCode($num,$w,$h) {
// 去掉了 0 1 O l 等容易产生混淆的字符
$str = "23456789abcdefghijkmnpqrstuvwxyz";
$code = ;
for ($i = 0; $i < $num; $i++) {
$code .= $str[mt_rand(0, strlen($str)-1)];
}
//将生成的验证码写入session,以备在验证页面中运用
$_SESSION["captcha_code_char"] = $code; //验证码存储在session,键名为captcha_code_char
//创建照片,定义颜色值
Header("Content-type: image/PNG");
$im = imagecreate($w, $h);
$black = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120));
$gray = imagecolorallocate($im, 118, 151, 199);
$bgcolor = imagecolorallocate($im, 235, 236, 237);
//画背景
imagefilledrectangle($im, 0, 0, $w, $h, $bgcolor);
//画边框
imagerectangle($im, 0, 0, $w-1, $h-1, $gray);
//imagefill($im, 0, 0, $bgcolor);
//在画布上随机生成海量点,起干扰功效;
for ($i = 0; $i < 80; $i++) {
imagesetpixel($im, rand(0, $w), rand(0, $h), $black);
}
//将字符随机表示在画布上,字符的水平间距和位置都按必定波动范围随机生成
$strx = rand(3, 8);
for ($i = 0; $i < $num; $i++) {
$strpos = rand(1, 6);
imagestring($im, 5, $strx, $strpos, substr($code, $i, 1), $black);
$strx += rand(8, 14);
}
imagepng($im);
imagedestroy($im);
}
?>2、将保留好的 captcha.php 文件复制粘贴或上传至你的 WordPress 主题根目录下 (wp-content\themes\你的主题名叫作\)
添加验证码表示和输入字段
首要咱们要在主题文件中找到负责登录的表单代码,每一个主题的登录表单名叫作和位置可能会不同样,通常状况下文件的名叫作都含有login,找到后用编辑器打开文件搜索 type="password" ,这个是秘码输入框,在这段代码下方咱们添加下面代码: /**
* 添加验证码表示及输入框
* @Author Jackie
* @Author url https://www.themeke.com
*/
//input 验证码输入字段,设置属性 name="code"
<input class="captcha-input" type="text" name="code" placeholder="验证码" autocomplete="off"/>
//创建并表示验证码照片
<img src="<?php bloginfo("template_url");?>/captcha.php?<?php echo rand();?>" class="captcha-code" title="看不清,点击换一张"/>后端校验验证码
注册或登录表单通常是以form表单POST数据,后端验证登录操作代码部分通常包括wp_signon()函数,能够经过编辑器代码搜索找此函数位置,咱们这儿以Verdure主题为例,其他主题类推。
咱们在验证登录的代码部分添加以下验证验证码的代码: /**
* 验证码提交验证
* @Author Jackie
* @Author url https://www.themeke.com
*/
session_start();
// 经过POST过来的验证码对比session存储的captcha_code_char键值来判断
if(empty($_POST[code]) || empty($_SESSION[captcha_code_char]) || trim(strtolower($_POST[code])) != $_SESSION[captcha_code_char]){
echo 验证码不正确; //返回数据按照实质状况修改
exit();
}以上便是怎样在WordPress主题自定义注册或登录表单中添加字符照片验证码多办法,这儿仅作规律办法讲解,按照实质运用的主题区别,以上代码部分可能需要修改以适配主题,css美化部分这儿就不说了,自己美化一下就能够了。
|