2017-08-14 17 views
1

私はcodeigniterを使っています。私は認証システムを使っています。ユーザーはログインできます。ログアウト後、すべてのページを見ることができます。問題は次にあります:なぜ、ログアウトしたユーザーは、ログインすることなくすべてのページを見ることができます。どうすれば修正できますか?これは私のコントローラです:codeigniterでの認証

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

class User extends CI_Controller { 

public function __construct() { 
    parent::__construct(); 
    $this->load->helper(array('url', 'form')); 
    $this->load->model("usermodel"); 
    $this->load->library('session'); 
} 

private function view($page, $data=false) { 
    if($page == "auth/login"){ 
     $this->load->view("auth/header_auth.php"); 
    }else{ 
     $this->load->view("header.php"); 
    } 

    $this->load->view($page, $data); 
    $this->load->view("footer.php"); 
} 

public function index() { 
    if ($this->session->userdata("user")) { 
     redirect("dashboard", "refresh"); 
     return; 
    } 
    $this->view("auth/login"); 
} 

public function fail() { 
    $this->view("auth/login"); 

} 

public function dashboard() { 
    $this->view("auth/dashboard"); 
} 

public function login() { 
    $login = $this->input->post("login"); 
    $password = $this->input->post("password"); 
    if ($this->usermodel->login($login, $password)) { 
     $this->session->set_userdata("user", $login); 
     redirect("dashboard", "refresh"); 
    } else { 
     redirect("fail", "refresh"); 
    } 
} 

public function logout() { 
    $this->session->unset_userdata('user'); 
    session_destroy(); 
    redirect('index', 'refresh'); 
} 

} 

答えて

0

ユーザーが

if (!$this->session->userdata("user")) { 
    redirect("auth/login", "refresh"); 
} 

を表示するためのユーザ権限を持っている必要があり、各関数の先頭にログインしているかどうかをチェックしなければならない、私はあなたのビュー機能のみを見ることができると仮定していますユーザーがログインしている場合、この

private function view($page, $data=false) { 
if (!$this->session->userdata("user")) { 
    redirect("auth/login", "refresh"); 
} 
    if($page == "auth/login"){ 
     $this->load->view("auth/header_auth.php"); 
    }else{ 
     $this->load->view("header.php"); 
    } 

    $this->load->view($page, $data); 
    $this->load->view("footer.php"); 
} 

private function view($page, $data=false) { 
    if($page == "auth/login"){ 
     $this->load->view("auth/header_auth.php"); 
    }else{ 
     $this->load->view("header.php"); 
    } 

    $this->load->view($page, $data); 
    $this->load->view("footer.php"); 
} 

を変更

更新

また、ダッシュボードには、ログインしているユーザーのみで、それが閲覧可能にするために、誰もが見ることができ、この操作を行います。

public function dashboard() { 
    if (!$this->session->userdata("user")) { 
    redirect("auth/login", "refresh"); 
    } 
    $this->view("auth/dashboard"); 
} 
+0

ありがとうございました!!しかし、まだ私は問題がある、私は404のページが見つかりませんエラー:( – Ksenia

+0

関数が呼び出し中に404エラーを返しますか? – Regolith

+0

ログイン関数はこのエラーを返します – Ksenia

関連する問題