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 相关文章推荐
PHP4与PHP5的时间格式问题
Feb 17 PHP
php截取utf-8中文字符串乱码的解决方法
Mar 29 PHP
php 将字符串按大写字母分隔成字符串数组
Apr 30 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
Jun 12 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
php生成随机颜色方法汇总
Dec 03 PHP
PHP常用文件操作函数和简单实例分析
Jun 03 PHP
PHP生成图片验证码功能示例
Jan 12 PHP
PHP实现生成推广海报的方法详解
Mar 14 PHP
PHP面向对象之里氏替换原则简单示例
Apr 08 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
PHP中mysqli_get_server_version()的实例用法
Feb 03 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中Session的概念
2006/10/09 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
JS实现图片剪裁并预览效果
2016/08/12 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
Python 开发Activex组件方法
2009/11/08 Python
python网络编程之数据传输UDP实例分析
2015/05/20 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
详解如何管理多个Python版本和虚拟环境
2019/05/10 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
Python timeit模块的使用实践
2020/01/13 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
Spartoo比利时:欧洲时尚购物网站
2017/12/06 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
会计出纳岗位职责
2013/12/25 职场文书
《姥姥的剪纸》教学反思
2014/02/25 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
修改并编译golang源码的操作步骤
2021/07/25 Golang
什么是动态刷新率DRR? Windows11动态刷新率功能介绍
2021/11/21 数码科技