tp验证码的自动验证小案例

模板文件

    <form action="" method="post">
<p>
User:
<input type="text" name="name1" id="">
</p>
<p>
PASS:
<input type="password" name="pass1" id="">
</p>
<p>
PASS:
<input type="password" name="rpass1" id="">
</p>
<p>
CODE
<input type="text" name="code" id="">
<img src="{:U('yzm')}" alt="">
</p>
<p>
<input type="submit" value="提交">
</p>
</form>

数据模型

<?php 

namespace Home\Model;

use  Think\Model;

class UserModel extends Model{
// 字段映射
protected $_map=array(
"name1"=>"name",
"pass1"=>"pass", ); // 自动验证 protected $_validate =array(
// array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),、
// 判断验证码是否存在
array('code','require','请输入验证码'),
// 判断验证码是否正确
array('code','checks','验证码错误',1,'callback',1),
// 判断用户名是否存在
array('name','require','请输入用户名'),
// 判断长度
array('name','6,12','用户名长度必须6-12位',1,'length',1),
// 判断用户名是否存在
array('name','','用户名已经存在',1,'unique',1),
// 密码是否正确
array('pass','require','密码不存在'),
// 密码长度
array('pass','6,12','密码长度必须6-12位',1,'length',1),
// 俩次密码是否一致
array('pass','check_pwd','两次密码不一致',1,'callback',1), ); // 检测验证码方法 public function checks(){
$verify = new \Think\Verify();
return $verify->check($_POST['code'], $id="");
} // 检测密码
public function check_pwd(){
if ($_POST['pass1']==$_POST['rpass1']) {
# code...'
return true;
}else{
return false;
}
} // 自动完成
protected $_auto=array(
// array(完成字段1,完成规则,[完成条件,附加规则]),
// 给状态设置默认值
array('statu','1',1),
// 设置时间戳
array('time','time',1,'function'),
// 用户名大写
array('name','asd',1,'callback'), ); function asd(){
return strtoupper($_POST['name1']);
}
} ?>

控制器文件

<?php
namespace Home\Controller;
use Think\Controller;
class UserController extends Controller {
public function index(){ $model=M('student'); // 多表查询
// $sql="select student.name as sname,type.name tname from student,type where student.cid=type.id"; // 发动sql语句
// $data=$model->query($sql); $data=$model->field('student.name sname,type.name tname')->join("type on type.id=student.cid")->select(); echo $model->getlastSql();
echo "<pre>";
print_r($data);
echo "</pre>"; } public function index1(){
$model=M('student'); $sql="select student.name as sname,type.name tname from student left join type on student.cid=type.id";
$data=$model->query($sql); $data=$model->field('student.name sname,type.name tname')->join('type on type.id=student.cid','right')->select();
echo $model->getLastSql();
echo "<pre>";
print_r($data);
echo "</pre>";
} // 添加页面 public function add(){ if (IS_POST) {
$model=D('user'); if ($model->create()) {
# code... if ($model->add()) {
# code...
} }else{
echo $model->getError();
} }else{
$this->display();
}
} public function add(){
if(){ }else{ }
} public function yzm(){
// $Verify = new \Think\Verify(); // // // 设置字体大小
// // $Verify->fontSize=30; // // // 使用背景图像
// // $Verify->useImgBg=true; // // // 是否干扰线
// // $Verify->useCurve=false; // // // 是否使用小点
// // $Verify->useNoise=true; // // // 验证码宽度
// // $Verify->imageW=500; // // // 验证码高度
// // $Verify->imageH=200; // // // 验证码位数
// // $Verify->length=3; // // // 设置干扰颜色
// // $Verify->bg=array(255,0,0); // // 设置验证码字符集合
// // $Verify->codeSet="1234567890"; // // 设置字体
// $Verify->fontttf="STXINWEI.TTF"; // $Verify->zhSet="我爱你中国"; // // 使用中文
// $Verify->useZh=true;
// $Verify->entry(); $Verify = new \Think\Verify();
// 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
$Verify->fontttf="STXINWEI.TTF";
$Verify->zhSet="我爱你中国";
$Verify->length=1;
$Verify->imageW=100;
$Verify->useZh = true;
$Verify->entry();
} function check_verify($code, $id = ''){
$verify = new \Think\Verify();
return $verify->check($code, $id);
}
public function yzm1(){
if (IS_POST) {
# code...
echo "<pre>";
print_r($_SESSION);
echo "</pre>"; if ($this->check_verify($_POST['code'])) {
echo "1";
}else{
echo "2";
}
}else{
$this->display(); }
} }

最新文章

  1. MyCAT常用分片规则之分片枚举
  2. oracle里面base64加解密
  3. asp.net 上一条和下一条记录的显示
  4. linux查看磁盘系统df,du
  5. httpc服务器错误类型大全
  6. Objective-C 中的方法回掉
  7. 将MYSQL查询导出到文件
  8. ASP.NET执行cmd命令
  9. java静态方法之线程安全问题
  10. redis发布与订阅
  11. AutoCAD中的扩展字典及扩展记录(C#)
  12. Anaconda下载及安装教程
  13. Task.Run与Task.Factory.StartNew的区别
  14. [LeetCode] Swap Adjacent in LR String 交换LR字符串中的相邻项
  15. Session兑现的一级缓存
  16. MT【11】对数放缩题
  17. 20165336 2017-2018-2 《Java程序设计》第1周学习总结
  18. LeetCode - Number of Recent Calls
  19. windows下安装python-Levenshtein
  20. memory management

热门文章

  1. zedboard:使用ISE和modelsim搭建仿真环境 标签: zedboardfpgamodelsimise 2017-03-03 14:00 528人阅读
  2. NCBI下载SRA数据
  3. WOJ 18 动态无向图
  4. linux文件夹下载
  5. backstop无法访问
  6. 小小c#算法题 - 11 - 二叉树的构造及先序遍历、中序遍历、后序遍历
  7. excel导出工具
  8. Spring 特点
  9. raspberry pi 3 openjdk 性能低下解决方法
  10. MVC要点