ThinkPHP验证码使用简明教程


Posted in PHP onMarch 05, 2014

一、首先需要在控制器中加入验证码方法admin/Lib/Action/LoginAction.class.php
知识点:
1、ob_clean函数用途
2、import方法调用think默认类库
3、Image类buildImageVerify方法使用

代码如下:

Public function verify(){
 ob_clean();
 //ob_clean函数 清空先前输出
 import('ORG.Util.Image');
 //import调用的是message/ThinkPHP框架目录下的扩展包Extend/Library/ORG/Util/中的Image.class.php类文件
 Image::buildImageVerify();
 //调用buildImageVerify方法生成验证码,默认参数为($length=4, $mode=1, $type='png', $width=48, $height=22, $verifyName='verify'),有兴趣的朋友可以研究下Image类
}

二、在模板文件中加入验证码模块admin/Tpl/Login/index.html
知识点:
1、验证码图片调用
2、js相关运行流程了解
3、__PUBLIC__常量

在密码输入框后加入如下代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="__PUBLIC__/Js/jquery-1.7.2.min.js"></script>
//__PUBLIC__常量可以在页面加载后,“查看页面源文件”中找到定义的__PUBLIC__目录,默认为项目根目录message下的Public目录,下面会讲解如何自定义__PUBLIC__系统常量
//jquery文件,只有加载了这个文件才可以调用jquery的方法
<script type="text/javascript" src="__PUBLIC__/Js/login.js"></script>
//这里的具体代码会在下面贴出,其实只是定义了一个change_code函数,也就是更换验证码的异步操作(可以在不刷新页面的情况下更换)
<title>Message Board BackGround</title>
</head>
<body>
 <form action="{:U('admin.php/Login/login')}" method="post" name="back_login" >
  <h2>简易后台登录系统</h2>
  用户名:<input type='username' name='username' id='username' />
  <br />
  密码:<input type='password' name='password' id='password' />
  <br />
  验证码:<input type="code" name="code"/> 
  //这里需要注意将type设置为code,name命名为code
  <img src="{:U('Admin/Login/verify','','')}" id="code"/>
  //img标签下的src就是调用Login控制器中的veryfy方法
  //后面的两个参数留空是必须的,其中第2个没实际意义,主要是为了第3个参数留空,这样设置可以取消伪静态后缀名,否则默认的伪静态后缀名为html,将会导致无法正常加载图片
  <a href="javascript:void(change_code(this));">看不清</a>
  //这里调用了个
  <br />
  <input type="submit"  value="登录"/>
 </form>
</body>
</html>

login.js文件在message/Public/目录下
文件内容如下:
verifyURL = 'http://localhost/message/admin.php/Login/verify';
//定义验证码路径
function change_code(obj){
 $("#code").attr("src",verifyURL+'/'+Math.random());
 //动态生成验证码方法,有兴趣的朋友可以深入研究下jq方法
 return false;
}

另:__PUBLIC__文件定义在message/admin/Conf/config.php
在配置中,加入如下内容,即可改变__PUBLIC__路径
配置如下:

//常量相关配置
'TMPL_PARSE_STRING' => array(
 '__PUBLIC__' => __ROOT__ . '/' . APP_NAME . '/Public',
 //路径改变为message/admin/Public,刷新页面,验证码依然可以刷新,则表明js生效,也可“查看页面源文件”
),
PHP 相关文章推荐
建立动态的WML站点(二)
Oct 09 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 PHP
解析php获取字符串的编码格式的方法(函数)
Jun 21 PHP
php强制更新图片缓存的方法
Feb 11 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
理解PHP中的Session及对Session有效期的控制
Jan 08 PHP
PHP常见漏洞攻击分析
Feb 21 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
Nov 20 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 20 PHP
PHP根据key删除数组中指定的元素
Feb 28 PHP
php实现微信公众号创建自定义菜单功能的实例代码
Jun 11 PHP
在laravel中实现事务回滚的方法
Oct 10 PHP
ThinkPHP分页类使用详解
Mar 05 #PHP
php统计文章排行示例
Mar 04 #PHP
php不使用插件导出excel的简单方法
Mar 04 #PHP
php无限遍历文件夹示例分享
Mar 04 #PHP
关于js和php对url编码的处理方法
Mar 04 #PHP
php面向对象中的魔术方法中文说明
Mar 04 #PHP
thinkphp实现多语言功能(语言包)
Mar 04 #PHP
You might like
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
许愿墙中用到的函数
2006/10/07 Javascript
javascript XMLHttpRequest对象全面剖析
2010/04/24 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
微信小程序实现联动选择器
2019/02/15 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
Vue3为什么这么快
2020/09/23 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
Python如何输出百分比
2020/07/31 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
舞会礼服和舞会鞋:PromGirl
2019/04/22 全球购物
应届毕业生的自我鉴定
2013/11/13 职场文书
职业生涯规划书基本格式
2014/01/06 职场文书
舞蹈教师自荐信
2014/01/27 职场文书
小学英语课后反思
2014/04/26 职场文书
会计电算化实训报告
2014/11/04 职场文书
银行竞聘报告范文
2014/11/06 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
Django使用redis配置缓存的方法
2021/06/01 Redis
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
python Django框架快速入门教程(后台管理)
2021/07/21 Python
Python OpenCV实现图形检测示例详解
2022/04/08 Python
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android