2011-01-29 21 views
0

私は私が何をしたいのかCodeIgniterでは、自動的に

$autoload['libraries'] = array('iadmin'); 

を持ってautoload.phpにそう

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Iadmin { 

    function check() 
    { 
     $CI =& get_instance(); 
     $CI->load->helper('url'); 
     $CI->load->helper('cookie'); 
     if(!get_cookie('lemon')){ 
      redirect('http://www.google.com/'); 
     } 
    } 
} 

?> 

のようなlibが持っているライブラリの実行を作りますレモン "、私は私のウェブサイトの任意のページにアクセスしようとするとGoogleにリダイレクトされます

問題:私はGoogleにリダイレクトされていません。

答えて

4

MY_Controllerを使用してデフォルトコントローラを拡張し、それをすべてのコントローラで拡張できます。 www.site.com/index.php/homeに行く

アプリケーション/コントローラ/ home.php

<?php 
    class Home extends MY_Controller { 
     function __construct(){ 
      parent::__construct(); 
     } 

     function index(){ 
      // Index page 
     } 
    } 
?> 

で アプリケーション/ライブラリ/ MY_Controller.phpで

<?php 
    class MY_Controller extends Controller { 
     function __construct(){ 
      parent::__construct(); 

      $this->load->helper('url'); 
      $this->load->helper('cookie'); 
      if(!get_cookie('lemon')){ 
       redirect('http://www.google.com/'); 
      } 
     } 
    } 
?> 

はあなたをリダイレクトしますあなたがレモンのクッキーを持っていなかったら。

フックでこのようなことをすることもできますが、私は一度も使ったことがないので、わかりません。

+0

これは私がそれについて行く方法です。 –

0

ライブラリにクラスを追加した後、関数Check()を呼び出して実行するか、そのコードをコンストラクタに配置する必要があります。

+0

ありがとう、私はすべてのコントローラでチェック()を呼び出す必要はありませんソリューションを探しています。 –

1

ライブラリではなく、この状況でフックを使用する必要があります。任意のコントローラがロードされる前に実行されるフックを作成し、フックコンストラクタのクッキーをチェックするコードを記述します。

リファレンス:あなただけIadminクラスのコンストラクタでそのコードを入れていないのはなぜhttp://codeigniter.com/user_guide/general/hooks.html

0

?それはあなたの問題を解決する必要があります、checkメソッドは自動的に呼び出されません。