2016-09-23 4 views
0

私はこのコードをログインせずにページにアクセスできないユーザーに使用していますが、ユーザーを妨害するようには機能していません。コードネイターでユーザーのログインを確認する方法

if(! $this->session->userdata('id')) 
     return redirect('Login'); 
    $this->load->view('public/dashboard'); 
+0

セッションが保存されていないことを意味します。 –

+3

は、 'id'セッション配列に情報を保存していますか?リターンを使って?セッションの値を保存する場所でコードを共有し、 'redirect()'を使用する必要はありません。 – devpro

+0

私のセッションは保存されますが、ユーザーがダッシュボードページにアクセスすることはできません。 –

答えて

0

これを試してみてください。しかし、一般的に私は別の戦略を使用して、私はビューでif文を作成します。 これはあなたのために動作しない場合は、私はさらに確認します。あなたは何ができるか

if(! $this->session->userdata('id')){ 
     $this->load->view('Login'); } 
else { 
     $this->load->view('public/dashboard'); } 
+0

あなたの答えをありがとうが、まだ完全には正しくありません。私は直接URLルートを書くときは、ダッシュボードページのアクセスを与える。 –

+0

あなたは正しいですが、問題は構文にありません。申し訳ありませんが、私は正しい答えで戻ってきます –

0

はMY_Controller

class Example extends MY_Controller { 

    public function index() { 

    } 

} 
0
if($this->session->userdata('id') == "") 
{ 
    redirect('Login'); 
} 
else 
{ 

    redirect('dashboard'); 
} 

にコントローラ変更CI_Controllerでこの

アプリケーション/コア/ MY_Controller.php

<?php 

class MY_Controller extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
     $route = $this->router->directory . $this->router->fetch_class(); 

     // echo $route; 

     // Ignore any controllers not to be effected 
     $ignore = array(
      'dirname/controllername', 
     ); 

     // If the user has not logged in will redirect back to login 

     if (!$this->session->userdata('id') && !in_array($route, $ignore)) { 
      $this->session->unset_userdata('id'); 
      redirect($this->config->item('base_url') . 'login'); 
     } 
    } 
} 

のようなものですここL oginとdashboardはどちらもコントローラ名です。

関連する問題