頭に釘を打ちましたが、もう少し効率的な方法があります。
ベースコントローラーを一方向に拡張します(元々はPhil Sturgeonによって概説されたと思います)が、ここで要約します:
この記事 を参照してください 非常に詳細な記述のために。
しかし本質的に:
<?php
class MY_Controller extends Controller
{
function __construct()
{
parent::Controller();
if (! $this->session->userdata('first_name'))
{
redirect('login'); // the user is not logged in, redirect them!
}
}
}
したがって、アクセスを制限する場合は、次のようにします。
class Secret_page extends MY_Controller {
// your logged in specific controller code
}
拡張コントローラーは、ユーザーがコンストラクターにログインしているかどうかを自動的にチェックします。
方法については、おそらくuser_idを値として設定して、そのセット、またはおそらくユーザーの「グループ」かどうかを確認します。そうすれば、システムでユーザー権限とさまざまなレベルのアクセスを取得できます。
これが少し役立つことを願っています。
編集
これをapplication/config.php
に追加します/*
| -------------------------------------------------------------------
| Native Auto-load
| -------------------------------------------------------------------
|
| Nothing to do with cnfig/autoload.php, this allows PHP autoload to work
| for base controllers and some third-party libraries.
|
*/
function __autoload($class)
{
if(strpos($class, 'CI_') !== 0)
{
@include_once( APPPATH . 'core/'. $class . EXT );
}
}
CI 2.0を使用しているため、MY_ControllersをライブラリではなくApplication/CORE内に配置する必要があります。
私のアプリケーション/コアは少し似ています:
Admin_Controller.php
MY_Controller.php
Public_Controller.php