当前位置:首页 > CMS教程 > Thinkphp > 列表

ThinkPHP验证码使用简明教程

发布:smiling 来源: PHP粉丝网  添加日期:2020-10-15 14:29:56 浏览: 评论:0 

验证码功能主要是为了防止网站登录功能被刷,但是根据现在市面上常见的验证码功能,很容易被绕过,所以如果想让网站足够安全的话,最好再研究深入一些。

一、首先需要在控制器中加入验证码方法admin/Lib/Action/LoginAction.class.php

知识点:

1、ob_clean函数用途

2、import方法调用think默认类库

3、Image类buildImageVerify方法使用

代码如下:

  1. Public function verify(){ 
  2.  ob_clean(); 
  3.  //ob_clean函数 清空先前输出 
  4.  import('ORG.Util.Image'); 
  5.  //import调用的是message/ThinkPHP框架目录下的扩展包Extend/Library/ORG/Util/中的Image.class.php类文件 
  6.  Image::buildImageVerify(); 
  7.  //调用buildImageVerify方法生成验证码,默认参数为($length=4, $mode=1, $type='png', $width=48, $height=22, $verifyName='verify'),有兴趣的朋友可以研究下Image类 

二、在模板文件中加入验证码模块admin/Tpl/Login/index.html

知识点:

1、验证码图片调用

2、js相关运行流程了解

3、__PUBLIC__常量

在密码输入框后加入如下代码:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
  2. <html> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
  5. <script type="text/javascript" src="__PUBLIC__/Js/jquery-1.7.2.min.js"></script> 
  6. //__PUBLIC__常量可以在页面加载后,“查看页面源文件”中找到定义的__PUBLIC__目录,默认为项目根目录message下的Public目录,下面会讲解如何自定义__PUBLIC__系统常量 
  7. //jquery文件,只有加载了这个文件才可以调用jquery的方法 
  8. <script type="text/javascript" src="__PUBLIC__/Js/login.js"></script> 
  9. //这里的具体代码会在下面贴出,其实只是定义了一个change_code函数,也就是更换验证码的异步操作(可以在不刷新页面的情况下更换) 
  10.  
  11. <title>Message Board BackGround</title> 
  12. </head> 
  13. <body> 
  14.  
  15.  <form action="{:U('admin.php/Login/login')}" method="post" name="back_login" > 
  16.   <h2>简易后台登录系统</h2> 
  17.   用户名:<input type='username' name='username' id='username' /> 
  18.   <br /> 
  19.   密码:<input type='password' name='password' id='password' /> 
  20.   <br /> 
  21.   验证码:<input type="code" name="code"/>  
  22.   //这里需要注意将type设置为code,name命名为code 
  23.   <img src="{:U('Admin/Login/verify','','')}" id="code"/> 
  24.   //img标签下的src就是调用Login控制器中的veryfy方法 
  25.   //后面的两个参数留空是必须的,其中第2个没实际意义,主要是为了第3个参数留空,这样设置可以取消伪静态后缀名,否则默认的伪静态后缀名为html,将会导致无法正常加载图片 
  26.   <a href="javascript:void(change_code(this));">看不清</a> 
  27.   //这里调用了个 
  28.   <br /> 
  29.   <input type="submit"  value="登录"/> 
  30.  </form> 
  31.  
  32. </body> 
  33. </html> 

login.js文件在message/Public/目录下

文件内容如下:

  1. verifyURL = 'http://localhost/message/admin.php/Login/verify'
  2. //定义验证码路径 
  3. function change_code(obj){ 
  4.  $("#code").attr("src",verifyURL+'/'+Math.random()); 
  5.  //动态生成验证码方法,有兴趣的朋友可以深入研究下jq方法 
  6.  return false; 

另:__PUBLIC__文件定义在message/admin/Conf/config.php

在配置中,加入如下内容,即可改变__PUBLIC__路径

配置如下:

  1. //常量相关配置 
  2. 'TMPL_PARSE_STRING' => array
  3.  '__PUBLIC__' => __ROOT__ . '/' . APP_NAME . '/Public'
  4.  //路径改变为message/admin/Public,刷新页面,验证码依然可以刷新,则表明js生效,也可“查看页面源文件” 
  5. ), 

Tags: ThinkPHP验证码

分享到: