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 各种排序算法实现代码
Aug 20 PHP
PHP 日志缩略名的创建函数代码
May 26 PHP
php设计模式 Factory(工厂模式)
Jun 26 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
Oct 27 PHP
PHP遍历数组的几种方法
Mar 22 PHP
ThinkPHP实现一键清除缓存方法
Jun 26 PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 PHP
php将远程图片保存到本地服务器的实现代码
Aug 03 PHP
反射调用private方法实践(php、java)
Dec 21 PHP
php连接oracle数据库的方法(测试成功)
May 26 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
Nov 28 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中使用Oracle数据库(4)
2006/10/09 PHP
深入php var_dump()函数的详解
2013/06/05 PHP
Some tips of wmi scripting in jscript (1)
2007/04/03 Javascript
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
token 机制和实现方式
2020/12/15 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
学习python 之编写简单乘法运算题
2016/02/27 Python
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
python实现比较文件内容异同
2018/06/22 Python
python requests post多层字典的方法
2018/12/27 Python
python快排算法详解
2019/03/04 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
Django中使用Celery的方法步骤
2020/12/07 Python
计算机专业应届毕业生自荐信
2013/09/26 职场文书
工会主席岗位责任制
2014/02/11 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
网络妈妈观后感
2015/06/08 职场文书
感恩主题班会教案
2015/08/12 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书