作为我大天朝的程序员,如果不会点thinkphp框架确实有点说不过去了(虽然作为菜鸟的我才入坑没几个月)。不过不会也没关系,很简单的一个php框架。今天为大家介绍的是thinkphp如何实现验证码的功能。

thinkphp自带验证码功能,我们直接调用就行了。发展到现在thinkphp已经有好几个正式版本了,最新的版本是thinkphp5.0。今天我将给大家介绍一下5的版本和3的版本。

thinkphp3的版本:

第一步:在我们相对应的控制器创建一个输出验证码方法

public function verify()
{
$Verify = new \Think\Controller\Verify();
$Verify->fontSize = 20; // 字体大小
$Verify->length = 6; // 多少个字符
$Verify->useNoise = false; // 是否添加杂点
$Verify->imageW = 233; // 验证码宽度
$Verify->imageH = 50; // 验证码高度
$Verify->entry();
}

第二步:在页面输出我们的验证码

<img src="{:U('Admin/verify')}" class="verifyCode" name="admin_verify" title="点击刷新验证码">

完成以上的操作即可。接下来,我们开始实现附加功能。

第一个点击验证码实现刷新(其实就是使用一个ajax方法再去重新加载一次图片输出而已):在我们的js中写入如下方法。

var verifyImg = $(".verifyCode");
var verifyPath = verifyImg.attr("src");
verifyImg.click(function () {
if (verifyPath.indexOf("?")>0) {
$(this).attr("src", verifyPath+'&random='+Math.random());
}else{
$(this).attr("src", verifyPath.replace(/\?.*$/,' ')+'?'+Math.random());
}
)})
// 或者直接不单独写js方法,直接给图片添加一个点击事件
<img src="{:U('Admin/verify')}" class="verifyCode" name="admin_verify" title="点击刷新验证码" onclick="this.src=\'' .{:U('Admin/verify')}. '?id=\'+Math.random();">

第二个就是后台验证我们的验证码正确性:先创建一个公共的验证函数(公共的配置函数文件是在common下面,可定义在项目的公共目录也可在模块的功能目录),在再我们接受用户信息提交的地方做验证并将错误信息反馈给用户。

// 公共的验证函数(建议放在项目的公共目录中,便于多个模块调用)
// 公共函数在系统中可以直接使用
function check_verify($code, $id = ""){
$verify = new \Think\Verify();
return $verify->check($code, $id);
}
// 接收页面传入的填写的验证码值
$data['admin_verify'] = I('post.admin_verify');
if (check_verify($data['admin_verify'])) {
$this->error("验证码不正确", U("login"), 3);
}

 thinkphp5的版本:

thinkphp5是一个历史性的变革,这里就不单独为大家介绍了。直接放大招了。

第一步:在我们的配置文件(config.php)中直接配置如下内容

/**
*需要开启url路由:'url_route_on' => true,
*/
'captcha' => [
// 验证码字符集合
'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
// 验证码字体大小(px)
'fontSize' => 25,
// 是否画混淆曲线
'useCurve' => true,
// 验证码图片高度
'imageH' => 30,
// 验证码图片宽度
'imageW' => 100,
// 验证码位数
'length' => 5,
// 验证成功后是否重置
'reset' => true
],

第二步:在我们的模板文件中输出即可

// 方式一(建议采用该方式)
<img src="{:captcha_src()}" alt="captcha" />
// 方式二
{:captcha_img()}

对比thinkphp3的版本,我们同样实现其他附加的功能。

第一个点击刷新:这里和thinkphp3的版本一致,就不单独介绍了。

第二个就是验证码验证:这里可以使用我们tp5内置的验证(建议),也可采用自定义验证。

// 内置验证
$this->validate($data,[
'captcha|验证码'=>'require|captcha'
]);
// 自定义验证
if(!captcha_check($captcha)){
//验证失败
};

自此thinkphp常用的版本在验证码的功能上已经介绍完了,不知道你还有什么问题没?如果有什么问题可以即时反馈本邮箱(18228937997@163.com),可以在文章下方留言。随时欢迎大家的骚扰。

下面的链接是本人在使用thinkphp遇见的问题,希望对你有所帮助。http://www.cnblogs.com/qqblog/p/6639653.html

最新文章

  1. Pramp - mock interview experience
  2. [No0000A8]Word中设置图片下的题注及插入多级列表编号
  3. 【BZOJ-4197】寿司晚宴 状压DP
  4. mysql内置函数大全
  5. python中几个常见的黑盒子之“字典dict” 与 “集合set”
  6. Sharepoint 文档库根据文件夹层级展示
  7. js封装
  8. NodeJS学习笔记 - Express4.x路由操作
  9. sql server 判断是否存在数据库,表,列,视图
  10. [转]C语言单引号和双引号的区别
  11. Raspberry pi raspbain系统下使用vim
  12. HttpGet 请求
  13. Ambari-部署文档
  14. python安装的时候报SSL连接错误的解决办法
  15. Make3D Convert your image into 3d model
  16. January 21st, 2018 Week 3rd Sunday
  17. 【POJ3974】最长回文字串
  18. QT_地图导航 源码下载
  19. 牛客多校10 D Rikka with Prefix Sum 不是数据结构
  20. Spring Boot 打war包并利用docBase指定根目录为打包的工程

热门文章

  1. 3D开源推荐:全球卫星地图 Esri-Satellite-Map
  2. vs2010的帮助文档
  3. python 继承式多线程
  4. 【Leetcode】【Easy】Length of Last Word
  5. 2.安装 Android SDK
  6. 启动PyCharm cannot start under Java 1.7 : Java 1.8 or later is required 解决方案
  7. CSS z-index的用法
  8. Fiori里花瓣的动画效果实现原理
  9. OC 内存管理(retain和release)
  10. 【洛谷2290】[HNOI2004] 树的计数(Python+利用prufer序列结论求解)