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.ini中文版(1)
Oct 09 PHP
Php注入点构造代码
Jun 14 PHP
php面向对象全攻略 (十七) 自动加载类
Sep 30 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
php实现webservice实例
Nov 06 PHP
PHP输入输出流学习笔记
May 12 PHP
PHP编程中尝试程序并发的几种方式总结
Mar 21 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
2017年最新PHP经典面试题目汇总(上篇)
Mar 17 PHP
THINKPHP在添加数据的时候获取主键id的值方法
Apr 03 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
Aug 01 PHP
php微信公众号开发之答题连闯三关
Oct 20 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
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
2020/04/06 PHP
JavaScript的Function详细
2006/11/14 Javascript
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
js 自带的sort() 方法全面了解
2016/08/16 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
2017/02/10 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
python下载微信公众号相关文章
2019/02/26 Python
python实现顺时针打印矩阵
2019/03/02 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
税务专业毕业生自荐信
2013/11/10 职场文书
给老师的道歉信
2014/01/11 职场文书
幼儿园大班教学反思
2014/02/10 职场文书
小学三年级学生评语
2014/04/22 职场文书
2015年教研工作总结
2015/05/23 职场文书
Go语言空白表示符_的实例用法
2021/07/04 Golang