2017-10-13 6 views
-1

ログインユーザーだけがアクセスできる基本セクションを実装しようとしています。CodeIgniterがプロパティをリダイレクトしていません

//file created in application/core/MY_Controller.php 
class Auth_Controller extends CI_Controller { 

    function __construct(){ 
     parent::__construct(); 

     $this->load->library('session'); 

     if ($this->session->userdata('user_logged') !== null){ 
      redirect(base_url() . 'dashboard'); 
      die(); 
     } else { 
      redirect(base_url() . 'auth/login'); 
      die(); 
     } 
    } 

そして私はAuth_Controllerから次のように、唯一のログインユーザのために利用可能なすべてのコントローラ拡張:私は次のように、CI_Controllerをオーバーライド

class Dashboard extends Auth_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() 
    { 
     $this->load->view('dashboardView'); 
    } 
} 

しかし、ログインsusccesful後、dashboardViewにリダイレクトされていません。

本当に何が起こっているのですか?

+0

「ダッシュボードビューにリダイレクトしない」とはどういう意味ですか?それは白いページを表示しますか?別のページにリダイレクトしますか? –

+0

別のビューを使用した場合は、同じ問題が発生します。ブラウザに「ページが正しくリダイレ​​クトされていません」と表示されます – omixam

+0

ここで説明するファイル名とクラス名について、コントローラの最初の文字のみ大文字にしてくださいhttps://www.codeigniter.com/user_guide/general/styleguide.html#ファイルネーミング – user4419336

答えて

1

あなたは、コードのこの部分でDashboardコントローラに無限にリダイレクトされる。

if ($this->session->userdata('user_logged') !== null){ 
    redirect(base_url() . 'dashboard'); 
    die(); 
} 

使用し、これは代わりに(ユーザーがログインしていない場合、ログインフォームにリダイレクト):

class Auth_controller extends CI_Controller { 

    function __construct(){ 
     parent::__construct(); 

     $this->load->library('session'); 

     // If the user is not logged in 
     if ($this->session->userdata('user_logged') === null){ 
      // Redirect to http://yoursite/auth/login 
      // No need for the base_url function, redirect does it for you 
      redirect('auth/login'); 
      // You don't have to exit/die, redirect() already does that 
     } 
    } 
} 
+0

ダッシュボードにリダイレクトするには、$ this-> session-> userdata( 'user_logged')!== nullにする必要がありますか? – omixam

+0

ユーザーがログインしていない場合はダッシュボードにリダイレクトし、既にログインしている場合は何もせずにコントローラの残りの部分を実行し続け、更新された回答を確認します。 –

+1

コントローラの最初の文字だけがここで説明されているファイル名とクラス名の大文字にする必要がありますhttps://www.codeigniter.com/user_guide/general/styleguide.html#file-naming – user4419336

0

意見

  1. 私がnullをチェックすると、WIこのように使用します!= null。 CI では、empty()ではなくnullをチェックするのが最適です。
  2. 私は

    if (!empty($this->session->userdata('user_logged'))) { 
        redirect('dashboard'); 
    else { 
        redirect('auth/login'); 
    } 
    

    があなたのサイトをロードすることを確認してくださいになります。このredirect('dashboard');


コードのようにそれを使用しますredirect()を使用している場合URLにはindex.phpが含まれていません。あなたのサイトに.htaccessがありません。

関連する問題