ホームページ  >  記事  >  php教程  >  ThinkPHP 表单自动验证运用,thinkphp表单验证

ThinkPHP 表单自动验证运用,thinkphp表单验证

WBOY
WBOYオリジナル
2016-06-13 09:24:10971ブラウズ

ThinkPHP 表单自动验证运用,thinkphp表单验证

使用TP 3.2框架

public function add_post(){
        //验证规则
        $rule=array(
            array('name','require','请输入姓名',1),//必须验证name
        );

        $m=M('user');

        //获取name,sex,contact数据到模型,并验证
        if(!$m->field('name,sex,contact')->validate($rule)->create())
            $this->error($m->getError());

        $result=$m->add();

        if(!$result)
            $this->error('添加失败');

        $this->success('添加成功',U('dir'));
    }

  验证规则也可以写到模型里,但我感觉有些麻烦,一是有时候不同页面验证的方式会不一样,二是看到这个add_post事件里的代码,就清楚要接收什么数据,如何验证数据能够在第一眼有个大致了解,所以总结出了此方式。

thinkphp 自动验证出现这样的错误提示:_TOKEN_ERROR_ 代表什意思?

ThinkPHP新版内置了表单令牌验证功能,可以有效防止表单的远程提交等安全防护。

表单令牌验证相关的配置参数有:'TOKEN_ON'=>true, // 是否开启令牌验证'TOKEN_NAME'=>'__hash__', // 令牌验证的表单隐藏字段名称'TOKEN_TYPE'=>'md5', //令牌哈希验证规则默认为MD5如果开启表单令牌验证功能,系统会自动在带有表单的模板文件里面自动生成以TOKEN_NAME为名称的隐藏域,其值则是TOKEN_TYPE方式生成的哈希字符串,用于实现表单的自动令牌验证。自动生成的隐藏域位于表单Form结束标志之前,如果希望自己控制隐藏域的位置,可以手动在表单页面添加 标识,系统会在输出模板的时候自动替换。如果在开启表单令牌验证的情况下,个别表单不需要使用令牌验证功能,可以在表单页面添加{__NOTOKEN__},则系统会忽略当前表单的令牌验证。如果页面中存在多个表单,建议添加标识,并确保只有一个表单需要令牌验证。模型类在创建数据对象的同时会自动进行表单令牌验证操作,如果你没有使用create方法创建数据对象的话,则需要手动调用模型的autoCheckToken方法进行表单令牌验证。如果返回false,则表示表单令牌验证错误。例如:$User = M("User"); // 实例化User对象// 手动进行令牌验证if (!$User->autoCheckToken($_POST)){// 令牌验证错误
 

thinkphp自动验证的问题

给你看我写的一个例子:
//表单验证
protected $_validate=array(
//array('验证字段','验证规则','错误提示',验证条件,附加规则,验证时间)
array('uname','require','用户名必须验证!',1,'regex',3),
//array('username','','用户名已经存在',1,'unique',1),
array('pwd','require','密码必须填写!'),

array('pwd','checkPwd','密码长度不少于6位',1,'callback'),
);

function checkPwd(){
$password=$_POST['pwd'];
if(strlen($password)>=6){
return true;
}else {
return false;
}
}
//表单映射
protected $_map=array(
'uname'=>'username',
'pwd'=>'password',
);
//自动完成功能
protected $_auto=array(
//array(填充字段,填充内容,填充条件,附加规则) 填充条件:1,插入 2,更新 3,所有的
array('reg_date','getDate',1,'callback'),
array('password','md5',3,'function'),
);
function getDate(){
return date('Y-m-d H:i:s');
}
 

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。