ThinkPHP中已经提供了验证码的生成以及验证的功能。下面介绍如何使用验证码。编程的时候还是采用MVC的方式

View层


 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action="{$smarty.const.__SELF__}" method="post">
用户名:<input type="text" name="username"/><br/>
密&nbsp;&nbsp;码:<input type="password" name="password"/><br/>
验证码:<input type="text" name="code"/>
<img src="http://localhost/CloudTemp/index.php/Home/Index/vertifyImg" alt=""/><br/>
<button type="submit">提交</button>
</form>
</body>
</html>

模版引擎采用smarty,__SELF__表示自身的URL,即表单提交给自己

Model层


<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2016/6/27
* Time: 9:14
*/ namespace Home\Model;
use Think\Model; class ManageModel extends Model{
function checkNamePwd($name, $pwd){
$userpwd = $this->getFieldByUsername($name, 'userpwd');
if($userpwd != null && $userpwd == $pwd)
return true;
else
return false;
}
}

model层对用户提交的用户名和密码进行数据匹配查询,如果一致,则返回true。

Controller层


<?php
namespace Home\Controller;
use Think\Controller;
use Home\Model\ManageModel;
class IndexController extends Controller { public function vertifyImg(){
$config = array(
'fontSize' => 15, // 验证码字体大小
'length' => 4, // 验证码位数
'useNoise' => false, // 开启验证码杂点
'imageH' => 30,
'imageW' => 110,
'fontttf' => '4.ttf'
);
$Verify = new \Think\Verify($config);
$Verify->entry();
} public function login(){
if(empty($_POST))
$this->display();
else{
if($this->checkVerify($_POST['code'])){
$user = new ManageModel('user');
$res = $user->checkNamePwd($_POST['username'], $_POST['password']);
if($res == true){
session('username', $_POST['username']);
session('password', $_POST['password']);
echo 'ok';
}
else
$this->display();
} else
$this->display();
}
}
private function checkVerify($code, $id = ''){
$verify = new \Think\Verify();
return $verify->check($code, $id);
}
}

在controller层生成验证码,用户身份检查。如果用户输入的用户名、密码、验证码正确则将用户名和密码保存到session中,并返回OK,否则返回登录页面。

ThinkPHP之验证码的使用的更多相关文章

  1. 修改ThinkPHP的验证码类

    今天用ThinkPHP重新开发一个系统,用到了ThinkPHP的验证码类,由于我希望验证码别太复杂,希望验证码里边只有数字,却发现该Verify类并未提供设置验证码中使用的字符的配置的方法,于是查看源 ...

  2. thinkphp 动态验证码

    <?php namespace Home\Controller; use Think\Controller; class TestController extends Controller { ...

  3. 用thinkPHP实现验证码的功能

    许多系统的登录都有验证码,而如果使用thinkPHP框架搭建网站的话,验证码的生成和验证就比较容易了 1.生成验证码 thinkPHP有对应生成验证码的方法 要使用验证码,需要导入扩展类库中的ORG. ...

  4. <转>用thinkPHP实现验证码的功能

    许多系统的登录都有验证码,而如果使用thinkPHP框架搭建网站的话,验证码的生成和验证就比较容易了 1.生成验证码 thinkPHP有对应生成验证码的方法 要使用验证码,需要导入扩展类库中的ORG. ...

  5. thinkphp框架验证码验证一次

    做异步验证验证码,只要验证一次结果正确,拿相同的值再次来对比,返回结果就不正确.我看到论坛中有人说,tp框架只要验证过一次正确后验证码就销毁了.确实是这个效果,但具体的还没深入了解

  6. Thinkphp中验证码的使用以及验证的实现

    <input class="TxtValidateCodeCssClass" id="captcha" name="captcha" ...

  7. thinkphp中文验证码不能显示的问题

    使用tp框架里的验证码,数字验证码能很好的显示出来,下面是实现的函数 function verify(){ import("ORG.Util.Image"); return Ima ...

  8. ThinkPHP的验证码刷新显示和验证码显示不出来的原因

    1.应当这样<imp src='验证码路径' onclick="this.src='验证码路径?'+Math.random()">;如果后面不加Math.random( ...

  9. ThinkPHP 实现验证码渲染、校验、点击刷新

    一.在控制器中写方法,生成验证码,代码如下: /** * 验证码生成 * expire 验证码的有效期(秒) * useImgBg 是否使用背景图片 默认为false * fontSize 验证码字体 ...

随机推荐

  1. android怎么连接sqlite数据库?

    SQLite数据库首先先建立SQLiteOpenHelper()的子类实现SQLiteOpenHelper中的OnCreate()方法和构造方法. this class takes care of o ...

  2. hdu 1542 Atlantis(线段树,扫描线)

    Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  3. 【从0到1】android网络框架的选型参考

    项目会使用到 socket tcp 级的网络访问,想选取一个使用较成熟异步网络框架, 提到的网络框架: 1. volley, 2. xutils. 3. android 4. netty, 5. mi ...

  4. Volley(四)—— ImageLoader & NetworkImageView

    Volley(四)—— ImageLoader & NetworkImageView ImageLoader是一个加载网络图片的封装类,其内部还是由ImageRequest来实现的.但因为源码 ...

  5. result默认返回action中的所有数据,要想返回指定的数据怎么做呢

    result默认返回action中的所有数据,要想返回指定的数据怎么做呢?

  6. 【有奖】NOIP普及组模拟赛 个人邀请赛 乐多赛

    题目描述 日本数学家角谷有一个猜想:任意一个自然数,经过以下过程,最终会得到1.现在请你打印出任意一个数使用角谷猜想转换为1需要几次. 演变方式: 1.如果这个数为奇数,则将它×3+1.如果这个数为偶 ...

  7. Xcode7 真机调试步骤以及遇到的问题解决办法

    打开Xcode7,打开preference 添加自己的apple ID登陆上去 打开一个自己的想要运行在真机上的项目 插上自己的iPhone真机(真机没必要是最新的系统,没必要升级,我刚开始报错以为是 ...

  8. 【转】WCF与Web API 区别(应用场景)

    Web api  主要功能: 支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作 请求的回 ...

  9. R语言利器之ddply和aggregate

    ddply和aggregate是两个用来整合数据的功能强大的函数. aggregate(x, ...) 关于aggregate()函数的使用在<R语言实战>中P105有简单描述,这里重新说 ...

  10. 通信vue2.0组件

    vue2.0组件通信各种情况总结与实例分析   Props在vue组件中各种角色总结 在Vue中组件是实现模块化开发的主要内容,而组件的通信更是vue数据驱动的灵魂,现就四种主要情况总结如下: 使用p ...