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 相关文章推荐
PHP.MVC的模板标签系统(二)
Sep 05 PHP
PHP extract 将数组拆分成多个变量的函数
Jun 30 PHP
深入解析php之apc
May 15 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 PHP
php使用curl发送json格式数据实例
Dec 17 PHP
php递归函数中使用return的注意事项
Jan 17 PHP
php文件缓存类汇总
Nov 21 PHP
PHP+JS实现大规模数据提交的方法
Jul 02 PHP
使用正则去除php代码中的注释方法
Nov 03 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
PHP给前端返回一个JSON对象的实例讲解
May 31 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 fseek函数读取大文件两种方法
2016/10/12 PHP
Extjs学习笔记之九 数据模型(上)
2010/01/11 Javascript
javascript 浏览器检测代码精简版
2010/03/04 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
2013/06/12 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
利用10行js代码实现上下滚动公告效果
2017/12/08 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
请说出你所知道的线程同步的方法
2013/04/19 面试题
怎么样写好简历中的自我评价
2013/10/25 职场文书
个人查摆问题自查报告
2014/10/16 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
初中毕业生感言
2015/07/31 职场文书
三下乡活动心得体会
2016/01/23 职场文书
施工安全责任协议书
2016/03/23 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
Python基础之元类详解
2021/04/29 Python
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python