正式进驻PHPCHINA...

cakephp - controllers 的 beforeFilter 的一点应用!

上一篇 / 下一篇  2007-11-29 09:00:01 / 个人分类:PHP应用

在您看这篇文章的时候,表示您对cakephp已经有了一定的了解!

[正文]
cakephp 是一个优质的 PHP 的 MVC 框架!但是它并不完美,也不是近乎完美!呵呵,还在发展中么,也不多做评论了,而且我也没本事写这个东西!
今天这里介绍的是其控制器里的beforeFilter属性!
beforeFilter字面理解就是 在...之前的过滤器,在什么之前呢?在控制器中的方法执行之前!那么又过滤什么呢?这个属性是你来填写内容,所以过滤器是你的方法!

var $beforeFilter = 'protect';
这里就是在任何方法调用之前,先调用 protect 方法!
pretect方法能做什么?还是先看看代码吧,这里我自己设定了一个 $protect_data 属性!
//需要保护的方法的数据
var $protect_data = array('method1','method2','protect',);
/*保护某些方法不被访问到!*/
function protect(){
   //很有趣的是这个函数也可以保护其自身! o(∩_∩)o...哈哈
   
$url = explode('/',$this->params['url']['url']);
    if(isset($url[1])){
     if(in_array($url[1],$this->protect_data)){
      $this->redirect('controllers/');
      exit;
     }
    }else{
     $this->redirect('controllers/');
    }
   }
在这里我也用到了 $params属性,该属性能返回控制器能所有用到的数据!(cake 自带的!)
从代码里我们看出,当我们在IE里直接调用这些方法的时候,页面会跳回到首页!这样的就可以有效的保护我们的方法不被访问到!


TAG: cakephp beforeFilter PHP应用

引用 删除 Guest   /   2008-05-25 22:29:25
www.xingchenbian33.cn
www.meinv880.cn
Thaiki's PHP Life 引用 删除 thaiki   /   2007-12-11 12:38:56
呵呵,因为PHP4不支持private嘛
sorrowboy的个人空间 引用 删除 sorrowboy   /   2007-12-05 17:07:32
嗯。。。

beforeFliter我一般是用来做权限验证,如

        function beforeFilter(){
                if (isset($_SESSION['login_id'])) {
                }else{
            $this->login() ;
                }
        }
sorrowboy的个人空间 引用 删除 sorrowboy   /   2007-12-05 17:05:52
还有种方法也可以的

在写action时

用private function action(){

}
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

数据统计

  • 访问量: 6019
  • 日志数: 8
  • 建立时间: 2007-05-26
  • 更新时间: 2008-02-26

RSS订阅

Open Toolbar