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经典的给图片加水印程序
Dec 06 PHP
PHP 函数学习简单小结
Jul 08 PHP
如何用php生成扭曲及旋转的验证码图片
Jun 07 PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
Mar 25 PHP
php动态添加url查询参数的方法
Apr 14 PHP
php实现的Curl封装类Curl.class.php用法实例分析
Sep 25 PHP
PHP实现递归无限级分类
Oct 22 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
Dec 02 PHP
php json_encode与json_decode详解及实例
Dec 13 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
PHP7下协程的实现方法详解
Dec 17 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 include任意文件或URL介绍
2014/04/29 PHP
php+mysql数据库查询实例
2015/01/21 PHP
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
php中用unset销毁变量并释放内存
2020/05/10 PHP
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
基于jquery的手风琴图片展示效果实现方法
2014/12/16 Javascript
jquery实现页面虚拟键盘特效
2015/08/08 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
node后端服务保活的实现
2019/11/10 Javascript
uniapp与webview之间的相互传值的实现
2020/06/29 Javascript
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
python 自定义对象的打印方法
2019/01/12 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
信号生成及DFT的python实现方式
2020/02/25 Python
python 写一个性能测试工具(一)
2020/10/24 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
华为C++笔试题
2014/08/05 面试题
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
介绍下Lucene建立索引的过程
2016/03/02 面试题
团员的自我评价
2013/12/01 职场文书
村委会贫困证明
2014/01/14 职场文书
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
php双向队列实例讲解
2021/11/17 PHP
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技
SQL SERVER触发器详解
2022/02/24 SQL Server