2017-08-14 34 views
1

我正在使用codeigniter,我正在執行auth系統 - 用戶可以登錄,他可以在註銷後看到所有頁面。接下來的問題是:爲什麼註銷的用戶可以看到所有未登錄的頁面,我該如何糾正它?這是我的控制器: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($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 (!$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"); 
} 

更新

也是你的儀表板是每個人都能看到,使其可見只有登錄的用戶這樣做:

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

非常感謝您!但我仍然有一個問題,我有一個404頁面沒有找到錯誤:( – Ksenia

+0

哪些功能,同時調用返回404錯誤?? – Regolith

+0

登錄函數返回此錯誤 – Ksenia