thinkphp自动验证和自动完成
Posted Howie_Tang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp自动验证和自动完成相关的知识,希望对你有一定的参考价值。
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(); } } }
以上是关于thinkphp自动验证和自动完成的主要内容,如果未能解决你的问题,请参考以下文章
我的thinkphp用的3.1版本,但是自动验证,字段映射,自动完成按照官方步骤做的都不能用