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 相关文章推荐
数据库相关问题
Oct 09 PHP
PHP 采集获取指定网址的内容
Jan 05 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
Apr 08 PHP
CI框架安全类Security.php源码分析
Nov 04 PHP
使用Huagepage和PGO来提升PHP7的执行性能
Nov 30 PHP
Zend Framework动作助手Json用法实例分析
Mar 05 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
Sep 30 PHP
详解no input file specified 三种解决方法
Nov 29 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
May 01 PHP
PHPstorm启用自动换行的方法详解(IDE)
Sep 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
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
dedecms中使用php语句指南
2014/11/13 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
js获取当前select 元素值的代码
2010/04/19 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
2014/05/14 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
JavaScript canvas实现跟随鼠标移动小球
2021/02/09 Javascript
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
Python将string转换到float的实例方法
2019/07/29 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
Python使用jpype模块调用jar包过程解析
2020/07/29 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
个人剖析材料范文
2014/09/30 职场文书
2015大学生求职信范文
2015/03/20 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB