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实现框架(二)
Oct 09 PHP
社区(php&amp;&amp;mysql)二
Oct 09 PHP
用PHP实现图象锐化代码
Jun 14 PHP
认识并使用PHP超级全局变量
Jan 26 PHP
php 获取本机外网/公网IP的代码
May 09 PHP
php网站来路获取代码(针对搜索引擎)
Jun 08 PHP
PHP中防止SQL注入实现代码
Feb 19 PHP
linux命令之调试工具strace的深入分析
Jun 03 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
PHP AjaxForm提交图片上传并显示图片源码
Nov 29 PHP
php实现文件预览功能
May 23 PHP
利用PHP获取汉字首字母并且分组排序详解
Oct 22 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
yii操作cookie实例简介
2014/07/09 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
用js实现随机返回数组的一个元素
2007/08/13 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
AngularJS之页面跳转Route实例代码
2017/03/10 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
jQuery实现ajax的嵌套请求案例分析
2019/02/16 jQuery
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
python常用排序算法的实现代码
2019/11/08 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
主题班会演讲稿
2014/05/22 职场文书
党员目标管理责任书
2014/07/25 职场文书
合作协议书模板2014
2014/09/26 职场文书
军人离婚协议书样本
2014/10/21 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
2014年节能工作总结
2014/12/18 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
大学生支教感言
2015/08/01 职场文书
计算机教师工作总结
2015/08/13 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
Python的这些库,你知道多少?
2021/06/09 Python
Java实现带图形界面的聊天程序
2022/06/10 Java/Android