0

私はこのようなコードイグナイターコントローラーを作成しました:

function Home() {
    parent::Controller();
    if(!$this->session->userdata('id')) 
        redirect ('login');
    $this->load->model('Home_Model');
}

しかし、ページにアクセスしようとすると、リダイレクト ページが表示されるようになりました。404が見つからないことを示すだけですが、コントローラーにlogin.phpを作成し、モデルにhome_model.phpも表示しました。

そのコードの問題とそれを修正する方法は何ですか?

ありがとうございました

4

1 に答える 1

1

この行のために:parent::Controller()、私はあなたがCodeIgniter 1を使用していると仮定します。あなたはhomeloginのようなページを構築しているので、あなたは新しいウェブサイトを構築し始めていると思います。私の仮定が正しければ、最新のCodeIgniter(現時点ではv2.1.0、PHP 5.1.6以降が必要)を使用することをお勧めします。CodeIgniterホームページでコピーを入手できます。

まず、エラー報告レベルを確認する必要があると思います。error_reporting(E_ALL);デバッグ用のようなものでなければなりません。まだの場合は、オンにしてコードを再実行します。多分あなたはその後あなた自身の答えを得るでしょう:)

その後、コンストラクターに対して以下のコードを試して、ホームコントローラーが期待どおりに処理されることを確認する必要があります。

function Home()
{
    parent::Controller();
    echo 'Home Class Initialized';
}
  1. 少なくとも404ページを表示する必要があります。何も印刷されない場合は、さらに情報が必要です。たぶん、ログをオンにしてログファイルを分析する必要があります/application/config/config.php$config['log_threshold'] = 2;

  2. 「HomeClassInitialized」が出力された場合は、404メッセージが続きます。コントローラーに次のようなものがあるかどうかを確認してください。

    public function index()
    {
        echo 'Invoke default method';
    }
    

    まだの場合は、追加してください。ここで独自のデフォルトメソッドの使用を確認することもできます

    それでも404の場合は、申し訳ありませんが、わかりません。たぶんあなたはもっとコードを投稿するべきです。

  3. 「ホームクラス初期化」のみを出力する場合:良好。今これを試してみてください

    function Home()
    {
        parent::Controller();
        if ( ! $this->session->userdata('id'))
        {
            echo 'Redirecting to login page';
            //redirect ('login');
        }
        $this->load->model('Home_Model');
    }
    

    これが印刷されRedirecting to login pageたら、コメント//redirect ('login');を外してログインページを確認します。手順1と2で同じパスをたどります。そうでない場合は、セッションデータを確認しますvar_dump($this->session->userdata('id')。PHPの虚偽について詳しくは、こちらをご覧ください。

  4. それでも失敗する場合は、__construct()PHP5の使用を検討してください。

    function __construct()
    {
        parent::__construct();
        if ( ! $this->session->userdata('id'))
        {
            redirect ('login');
        }
        $this->load->model('Home_Model');
    }
    

その他:これを使用する場合は、この$this->load->model('Home_Model');ようにhome_modelを呼び出す必要があると思います。そうしないと$this->Home_Model->foo();、NULLへのアクセスエラーが発生します。

于 2012-05-25T21:05:32.140 に答える