问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

thinkphp中验证码怎么实现验证功能

发布网友 发布时间:2022-04-05 23:41

我来回答

2个回答

懂视网 时间:2022-04-06 04:02

下面由ThinkPHP教程栏目给大家介绍ThinkPHP框架之验证码 ,希望对需要的朋友有所帮助!

ThinkVerify类可以支持验证码的生成和验证功能。

下面是最简单的方式生成验证码:

$Verify = new ThinkVerify();$Verify->entry();

上面的代码会生成默认的验证码图片并输出,显示如下:

生成的验证码信息会保存到session中,包含的数据有:

array('verify_code'=>'当前验证码的值','verify_time'=>'验证码生成的时间戳')

如果你需要在一个页面中生成多个验证码的话,entry方法需要传入可标识的信息。

验证码参数

可以对生成的验证码设置相关的参数,以达到不同的显示效果。这些参数包括:

参数描述
expire验证码的有效期(秒)
useImgBg是否使用背景图片 默认为false
fontSize验证码字体大小(像素) 默认为25
useCurve是否使用混淆曲线 默认为true
useNoise是否添加杂点 默认为true
imageW验证码宽度 设置为0为自动计算
imageH验证码高度 设置为0为自动计算
length验证码位数
fontttf指定验证码字体 默认为随机获取
useZh是否使用中文验证码
bg验证码背景颜色 rgb数组设置,例如 array(243, 251, 254)
seKey验证码的加密密钥
codeSet验证码字符集合 3.2.1 新增
zhSet验证码字符集合(中文) 3.2.1 新增

默认参数配置:

参数设置使用两种方式。

实例化传入参数:

或者采用动态设置的方式,如:

验证码字体

默认情况下,验证码的字体是随机使用 ThinkPHP/Library/Think/Verify/ttfs/目录下面的字体文件,我们可以指定验证码的字体,例如:

$Verify = new ThinkVerify();// 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf$Verify->fontttf = '5.ttf';$Verify->entry();

背景图片

支持验证码背景图片功能,可以如下设置:

$Verify = new ThinkVerify();// 开启验证码背景图片功能 随机使用 ThinkPHP/Library/Think/Verify/bgs 目录下面的图片$Verify->useImgBg = true;$Verify->entry();

中文验证码

如果要使用中文验证码,可以设置:

$Verify = new ThinkVerify();// 验证码字体使用 ThinkPHP/Library/Think/Verify/zhttfs/simhei.ttf$Verify->useZh = true;$Verify->entry();

显示效果如图:

如果无法正常显示,请确认你的 ThinkPHP/Library/Think/Verify/zhttfs/ 目录下面存在中文字体文件。

若ThinkPHP/Library/Think/Verify/zhttfs/里面没有中文字体文件,可以下载或者从C:WindowsFonts里面找到中文字体文件复制过来,注意字体文件扩展名为.ttf。

验证码检测

可以用ThinkVerify类的check方法检测验证码的输入是否正确,例如,下面是封装的一个验证码检测的函数:

// 检测输入的验证码是否正确,$code为用户输入的验证码字符串function check_verify($code, $id = ''){$verify = new ThinkVerify();return $verify->check($code, $id);
}

练习:以登录为例:

控制器方法:

<?php
namespace HomeController;use ThinkController;class LoginController extends Controller
{ function Login()
 { if(empty($_POST))
 {  $this->display(); 
 } 
 else
 {  $code = $_POST["yzm"];  $verify = new ThinkVerify();  if($verify->check($code,2)) //code是用户输入的值 ,2是验证码检测标示,必须与生成的验证码标示相同才能验证  {  if($_POST["uid"]!="" && $_POST["pwd"]!="")
  {   $model = D("Users");   $uid = $_POST["uid"]; 
   $pwd = $_POST["pwd"];   $attr = $model->field("Pwd")->find($uid);   //var_dump($attr);
   if($pwd==$attr["pwd"])
   {
   session("uid",$uid); // 跳转页面之前将$uid存入session   $this->success("登录成功!","Main");      }   else
   {   $this->error("登录失败!"); 
   }
  }  else
   {   $this->error("用户名或者密码不能为空!"); 
   }
  }  else
  {  $this->error("验证码不正确!"); 
  }
 } 
 }//生成验证码的操作方法
 function yzm()
 { $config = array( 
  'fontSize' => 30, // 验证码字体大小 
  'length' => 4, // 验证码位数 
  'useCurve' => true, // 是否画混淆曲线 
  'useNoise' => true, // 关闭验证码杂点
  'expire' => 60, // 验证码有效期(秒)
  'useImgBg' => false, // 使用背景图片
  'useZh' => true, // 使用中文验证码
  'imageW' => 240, // 验证码宽度
  'imageH' => 60, // 验证码高度
  'fontttf' => 'simhei.ttf', // 验证码字体 ); $Verify = new ThinkVerify($config); $Verify->entry(2);//参数是生成验证码的标示,适用于同一个页面有多个验证码的时候,生成验证码的标示必须与检测验证码的标示相同,否则验证码不正确 }?>

请求Login方法:

热心网友 时间:2022-04-06 01:10

第一步。在下载thinkphp 完整包, 1 在解压包D:\ThinkPHP_2.2_Full\ThinkPHP\Lib\ORG\Util 目录下: 把Image.class.php 文件和String.class.php 文件复制到 自己项目的ThinkPHP\Lib\ORG\Util(下面新建ORG 文件和Util 文件)的下面 复制后的完整路径:自己项目\ThinkPHP\Lib\ORG\Util\把Image.class.php 文 件和String.class.php 文件 *把ORG 放在ThinkPHP 中==》C:\wamp\www\test\ThinkPHP\Lib 下面。 第二步,在项目Tpl 系统模板目录 目录中建index.php C:\wamp\www\test\home\Tpl\default\Index\index.php Index.php 页面代码如下:
刷新验证码 确定
第三步,在Lib 系统基类库目录中建IndexAction.class.php 文件。 IndexAction.class.php 页面代码如下: display(); } //检验验证码是否正确 public function verifyCheck() { //防止页面乱码 header('Content-type:text/html;charset=utf-8'); if (md5($_POST['verifyTest']) != Session::get('verify')) { echo '验证码错误'; } else { echo '验证码正确'; } } // 生成验证码 public function verify() { ob_clean(); import("ORG.Util.Image"); Image::buildImageVerify(); } } ?> 第四步:在浏览器中输入:http://localhost/test/home.php/index 效果:
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
联想服务器u盘启动装系统教程视频 联想服务器如何做系统 三色翡翠手镯价格三色翡翠手镯是哪三种颜色 许昌天悦广场售楼热线是多少? 填食品生产许可证申请书时,申请人各项质量安全管理制度清单及其... 最新二手房网签合同范本 房地产网签合同范本 上海房地产网签合同怎么写 如何将数学题用程序解出答案? 数学:编写一个程序,输出数字1,2,3,4,5。 thinkphp 验证码怎么调用 在Thinkphp中怎么做登陆的验证码 如何解决thinkphp5中验证码常见问题 ASP PHP JSP SQL都指的是什么啊,它们有什么区别呀? 做网站用PHP还是ASP有什么区别? asp和net还有PHP的区别是什么? ASP型空间跟PHP型空间什么区别? 用php和asp开发的网站有什么区别? 对于数据库,ASP和PHP有什么不同吗? 网页的类型asp,php他们有什么区别呀? 网站.php 与 .asp 有什么区别啊? php和asp有什么区别,感觉都是一样的,差不多 php与asp语言的区别:用什么语言进行网页开发最好 php与asp的区别 Asp网站与Php网站的区别在哪里?怎么区别? asp和.php网站的具体区别,各有何优点 php语言和asp语言有什么区别? php redis 可以使用yeild吗 php怎么实现redis阻塞队列 php连接redis是什么服务类型 thinkphp 验证码问题 thinkphp手机短信验证码怎么处理 thinkphp 怎么修改默认验证码 thinkphp框架的验证码源码在哪里?请提供版本和对应位置谢谢 WampServer 中用thinkphp框架时 验证码无法显示 如何解决??? thinkphp怎样检验自己生成的验证码 thinkphp5 验证码怎么用 使用thinkPHP 验证码的注意事项? thinkphp如何获取session中的验证码 如何把Thinkphp的验证码单独使用 tp框架中 验证码session为空的原因 thinkphp 中如何判断验证码是否正确 laravel 使用all获取数据库数据的时候,怎么使用数据 laravel5 怎么获取数组形式的数据 为什么Laravel会成为最成功最流行的PHP框架 在laravel或者thinkphp中使用模型获取商品列表时怎么也获取到每条数据对应的分类 PHP的Laravel中的如何从视图中获取来自数据库中的信息并在控制器中获取 laravel数据库读写分离了,如何指定从写的数据库读取数据? python将字典的键和值对换后值重复怎么办 python为什么使用字典解析会出现值一样的结果