关于ci框架,刚大学毕业的时候用的比较多,也没有接触到比较高级的用法,新入值的公司用了ci框架,借着这个契机研究了一下ci的一些高级用法。
在做web开发的时候我们经常会遇到一个问题,就是后台登录需要验证权限,而且每个页面都要做这个验证,如果在每一个页面都加入校验的代码,就产生了很多重复的代码,这对后期的维护来说十分不利,在ci框架中允许我们创建属于自己的类库,具体实现方式如下:
1、在application/libraries目录下创建一个类文件,Auth.php,内容如下:
<?php
class Auth {
//校验当前用户是否有权限浏览该网页
public function checkPower()
{
if(isset($_COOKIE['uid']) && base64_decode($_COOKIE['']) == admin){
return;
}
die('非法操作');
}
}
这里需要注意一下命名规范:
①文件名首字母大写. 例如: Myclass.php
②类声明首字母大写. 例如: class Myclass
③类的名字和文件名应相同.
2、在需要校验权限的页面加入如下代码,以welcome为例:
public function __construct(){
parent::__construct();
$this->load->library('auth');
$this->auth->checkPower();
}
这样访问http://localhost/ci2/地址的时候,页面出现了报错信息:
非法操作
因为每个action都需要校验,所以我把校验代码写在了构造方法里面,如果你嫌每次都要手动load一遍比较麻烦,可以将auth加入到config/autoload.php文件中:
$autoload['libraries'] = array('auth');
这样以后就可以省去
$this->load->library('auth');
这个步骤了。
按着上面的例子我们可以再创建一个Layout.php,用于左右分栏的后台样式输出,具体代码如下:
<?php
class Layout {
private $ci;
public function __construct()
{
$this->ci = & get_instance ();
}
/**
* *
*
* 模板显示
*
* @param $view 模板名称
*
* @param $data 模板变量数组
*
*
*/
public function view($view = '', $data = '')
{
$this->ci->load->view ( 'backend/public/headerV',$data );
$this->ci->load->view ( 'backend/public/menuV' );
if ($view)
{
$this->ci->load->view ( 'backend/'.$view, $data );
}
$this->ci->load->view ( 'backend/public/footerV' );
}
public function excelView($view = '', $data = '')
{
$this->ci->load->view ( 'backend/'.$view, $data );
}
}
我们再在后台的控制器中的action加入如下代码即可:
$this->load->library('layout');
$this->layout->view();