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编程效率 引入缓存机制提升性能
Feb 15 PHP
一步一步学习PHP(7) php 字符串相关应用
Mar 05 PHP
PHP数据类型之布尔型的介绍
Apr 28 PHP
php curl模拟post提交数据示例
Dec 31 PHP
php使用$_POST或$_SESSION[]向js函数传参
Sep 16 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
Oct 01 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
Dec 19 PHP
php中JSON的使用与转换
Jan 14 PHP
php使用curl简单抓取远程url的方法
Mar 13 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 PHP
深入解析PHP底层机制及相关原理
Dec 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一些有意思的小区别
2006/12/06 PHP
PHP中设置时区方法小结
2012/06/03 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
实例讲解php将字符串输出到HTML
2019/01/27 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
js 利用className得到对象的实现代码
2011/11/15 Javascript
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
2017/01/23 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
JS数组及对象遍历方法代码汇总
2020/06/16 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
使用Python抓取豆瓣影评数据的方法
2018/10/17 Python
python做反被爬保护的方法
2019/07/01 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
简约控的天堂:The Undone
2016/12/21 全球购物
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
买房子个人收入证明
2014/10/12 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书