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 setcookie() cannot modify header information 的解决方法
Jan 09 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
Jun 13 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
php中用socket模拟http中post或者get提交数据的示例代码
Aug 08 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
PHP内核探索:变量概述
Jan 30 PHP
php+ajax实现无刷新的新闻留言系统
Dec 21 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
PHP单例模式是什么 php实现单例模式的方法
May 14 PHP
PHP新特性详解之命名空间、性状与生成器
Jul 18 PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 PHP
在Laravel中使用MongoDB的方法示例
Nov 11 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下连接mssql2005的代码
2011/01/17 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
javascript入门基础之私有变量
2010/02/23 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
jquery实现自定义图片裁剪功能【推荐】
2017/03/08 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
python与C互相调用的方法详解
2017/07/14 Python
python模块之time模块(实例讲解)
2017/09/13 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
python支付宝支付示例详解
2019/08/22 Python
Django中的cookie和session
2019/08/27 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
Opencv求取连通区域重心实例
2020/06/04 Python
后勤人员自我鉴定
2013/10/20 职场文书
创业大赛策划书
2014/03/01 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
七年级地理教学计划
2015/01/22 职场文书
2015年教师国培感言
2015/08/01 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书