您当前的位置: 首页 > 学无止境 > 网站建设 网站首页网站建设
thinkphp权限判断和三大自动
发布时间:2016-01-12 18:45:28编辑:雪饮阅读()
整个模块批量前置方法的准备工作:
<?php
// 本类由系统自动生成,仅供测试用途
class CommonAction extends Action {
public function _initialize(){
//初始化的时候检查用户权限
if(!isset($_SESSION["username"]) || $_SESSION["username"]==""){
$this->redirect("Login/login");
}
}
}
想要整个模块都使用相同的前置方法时就继承如上类:
<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends CommonAction {
public function index(){
if(isset($_SESSION["username"]) && $_SESSION["username"]!=""){$this->display();}
else{redirect('/Login/login');}
}
public function top(){
//$this->assign("name",$_SESSION["username"]);
$this->display();
}
public function left(){
$this->display();
}
public function right(){
$this->display();
}
}
注册模块数据添加的简化:
public function doreg(){
$username=$_POST["username"];
$password=$_POST["password"];
$repassword=$_POST["repassword"];
$sex=$_POST["sex"];
$user=M("User");
$user->create();//自动获取前端提交来的数据形成一个数组
$lastid=$user->add();
if($lastid){
$this->redirect("Index/index");
}
else{
$this->error("用户注册失败");
}
}
Create会自动获取浏览器提交的数据并自动组成数组.只需要将页面字段name值对应即可。(但前提是你的数据库中存在对应字段,不然create也不会自动获取的)
创建model类:
<?php
class UserModel extends Model{
protected $_validate=array(
array('code','require','验证码错误!'),
);
}
?>
protected $_validate=array(
array('code','require','验证码必须填写!'),
array('username','require','用户名必须填写'),
array('username','','用户已经存在',0,'unique',1),
);
验证字段、验证规则、提示信息、验证条件、附加规则、验证时
验证字段:对于指定name属性的表单元素值进行验证
验证规则:诸如正则表达式
提示信息:验证的结果提示
验证条件:
Model::EXISTS_VALIDATE 或者0 存在字段就验证 (默认)
Model::MUST_VALIDATE 或者1 必须验证
Model::VALUE_VALIDATE或者2 值不为空的时候验证
附加规则:
regex 正则验证,定义的验证规则是一个正则表达式(默认)
function函数验证,定义的验证规则是一个函数名
callback方法验证,定义的验证规则是当前模型类的一个方法
confirm验证表单中的两个字段是否相同,定义的验证规则是一个字段名
equal 验证是否等于某个值,该值由前面的验证规则定义
in验证是否在某个范围内,定义的验证规则必须是一个数组
length验证长度,定义的验证规则可以是一个数字(表示固定长度)或者数字范围(例如3,12 表示长度从3到12的范围)
between验证范围,定义的验证规则表示范围,可以使用字符串或者数组,例如1,31或者array(1,31)
expire验证是否在有效期,定义的验证规则表示时间范围,可以到时间,例如可以使用 2012-1-15,2013-1-15 表示当前提交有效期在2012-1-15到2013-1-15之间,也可以使用时间戳定义
ip_allow 验证IP是否允许,定义的验证规则表示允许的IP地址列表,用逗号分隔,例如 201.12.2.5,201.12.2.6
ip_deny 验证IP是否禁止,定义的验证规则表示禁止的ip地址列表,用逗号分隔,例如201.12.2.5,201.12.2.6
unique 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值。
验证时:update、insert等时机下的验证
自定义创建的类的使用:
public function doreg(){
$user=D('User');
if(!$user->create()){
$this->error('有问题');
}
$lastid=$user->add();
if($lastid){
$this->redirect("Index/index");}
else{
$this->error("用户注册失败");
}
}
自动判断错误问题所在:
public function doreg(){
$user=D('User');
if(!$user->create()){
$this->error($user->getError());
}
$lastid=$user->add();
if($lastid){
$this->redirect("Index/index");}
else{
$this->error("用户注册失败");
}
}
回调函数式验证字段:
<?php
class UserModel extends Model{
protected $_validate=array(
array('code','checkCode','验证码错误!',0,'callback',1),
array('username','require','用户名必须填写'),
array('username','','用户已经存在',0,'unique',1),
);
protected function checkCode($code){
if(md5($code)!=$_SESSION['code']){
return false;
}
else{
return true;
}
}
}
?>
正则式验证:
<?php
class UserModel extends Model{
protected $_validate=array(
array('code','checkCode','验证码错误!',0,'callback',1),
array('username','require','用户名必须填写'),
array('username','','用户已经存在',0,'unique',1),
array('username','/^\w{6,}$/','用户名至少6个字母',0,'regex',1),
);
protected function checkCode($code){
if(md5($code)!=$_SESSION['code']){
return false;
}
else{
return true;
}
}
}
?>
指定两字段信息一致的验证:
array('repassword','password','确认密码不正确',0,'confirm'),
Right模版:
<form action="__APP__/Message/doMess" method="post" enctype="multipart/form-data">
留言题目:<input type="text" name="title"/><br/>
留言内容:<textarea name="content"></textarea><br/>
附件:<input type="file" name="filename"/><br/>
<input type="submit"/>
</form>
留言类:
<?php
// 本类由系统自动生成,仅供测试用途
class MessageAction extends Action {
public function doMess(){
$message=M("Message");
$message->create();
import('ORG.Net.UploadFile');
$upload=new UploadFile();//实例化上传类
$upload->savePath='./Public/Uploads/';//设置上传文件保存目录
if(!$upload->upload()){
$this->error($upload->getErrorMsg());//上传错误提示信息
}
else{
//上传成功获取文件信息
$info=$upload->getUploadFileInfo();
}
$message->filename=$info[0]['savename'];
$message->time=time();
$message->uid=$_SESSION["id"];
$lastid=$message->add();
if($lastid){
$this->success("留言成功");
}
else{
$this->error("留言失败");
}
}
}
完整案例下载:
模块(控制器):
视图下载:
模型下载:
驱动下载:
关键字词:thinkphp,权限,自动,个人博客