ThinkPHP验证码使用简明教程

 更新时间:2014年03月05日 09:56:08   作者:  
验证码功能主要是为了防止网站登录功能被刷,但是根据现在市面上常见的验证码功能,很容易被绕过,所以如果想让网站足够安全的话,最好再研究深入一些

一、首先需要在控制器中加入验证码方法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 搜索框提示(自动完成)实例代码

    输入要搜索的文字时在搜索框下方提示相关的搜索信息实现方法,就是自动完成效果
    2012-02-02
  • 如何在centos8自定义目录安装php7.3

    如何在centos8自定义目录安装php7.3

    在本文中我们将给大家介绍如何在centos8自定义目录安装php7.3,在选择要安装的PHP版本之前,请确保你的应用程序支持它,我们还将向你展示如何将PHP与Nginx和Apache集成,感兴趣的朋友跟随小编一起看看吧
    2019-11-11
  • Symfony2实现在doctrine中内置数据的方法

    Symfony2实现在doctrine中内置数据的方法

    这篇文章主要介绍了Symfony2实现在doctrine中内置数据的方法,结合实例形式分析了在doctrine中内置数据的具体步骤与相关技巧,需要的朋友可以参考下
    2016-02-02
  • php从数据库中获取数据用ajax传送到前台的方法

    php从数据库中获取数据用ajax传送到前台的方法

    今天小编就为大家分享一篇php从数据库中获取数据用ajax传送到前台的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • PHP中的表达式简述

    PHP中的表达式简述

    表达式是 PHP 最重要的基石。在 PHP 中,几乎所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是“任何有值的东西”。这篇文章主要介绍了PHP中的表达式简述的相关资料,需要的朋友可以参考下
    2016-05-05
  • 详解PHP使用Redis存储session时的一个Warning定位

    详解PHP使用Redis存储session时的一个Warning定位

    本篇文章主要介绍了PHP使用Redis存储session时的一个Warning定位,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • ajax实现无刷新分页(php)

    ajax实现无刷新分页(php)

    直接给出源代码,可自行分析,写的不好请留言指正,谢谢!
    2010-07-07
  • PHP内核学习教程之php opcode内核实现

    PHP内核学习教程之php opcode内核实现

    opcode是计算机指令中的一部分,用于指定要执行的操作, 指令的格式和规范由处理器的指令规范指定,通过本文给大家介绍PHP内核学习教程之php opcode内核实现,感兴趣的朋友一起学习吧
    2016-01-01
  • php preg_match的匹配不同国家语言实例

    php preg_match的匹配不同国家语言实例

    这篇文章主要介绍了php preg_match的匹配不同国家语言实例的相关资料,需要的朋友可以参考下
    2016-12-12
  • 微信网页授权(OAuth2.0) PHP 源码简单实现

    微信网页授权(OAuth2.0) PHP 源码简单实现

    这篇文章主要为大家详细介绍了微信网页授权(OAuth2.0) PHP 源码简单实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论