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_5模型修改器和自动完成

我的thinkphp用的3.1版本,但是自动验证,字段映射,自动完成按照官方步骤做的都不能用

ThinkPHP如何防止SQL注入?

Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册

thinkphp自动验证

thinkphp自动验证无效的问题