如果我已登录,则使用codeigniter

时间:2016-08-31 09:13:51

标签: php codeigniter

登录控制器:

class Login extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->library('session');
        $this->load->library('form_validation');
        $this->load->model('login_model');
    }

  public function index() {
        $this->form_validation->set_rules('username', 'UserName', 'required');
        $this->form_validation->set_rules('password', 'Password', 'required');
        if ($this->form_validation->run() == FALSE) {
            $this->load->view('admin/login');
        } else {
            $result = $this->login_model->select_login($_POST);   //check username and password
            if ($result) {
                $user = array(
                    'id' => $result['id'],
                    'username' => $result['username'],
                    'password' => $result['password']
                );
                $this->session->set_userdata($user);
                redirect('admin/Dashboard');
            } else {
                $data['msg'] = 'Invalid UserName and Password';
                $this->load->view('admin/login', $data);
            }
        }
    }

}

信息中心控制器:

class Dashboard extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->library('session');
    }

    public function index() {
        $session_id = $this->session->userdata('id');
        if (!empty($session_id)) {
            $data = array(
                'page_title' => 'Dashboard',
                'page_name' => 'dashboard/dashboard',
                'admin_username' => $this->session->userdata('username')
            );
            $this->load->view('admin/template', $data);
        } else {
            redirect('admin/Login');
        }
    }
}

信息中心视图

    <html>
    <body>
    <h1>Helllo Admin</h1>
    </body>
</html>

问题

如果我已经登录,如何重定向我的信息中心?

2 个答案:

答案 0 :(得分:0)

什么是管理员&#34;重定向(&#39; admin / Dashboard&#39;);&#34;。您是否对路径文件中的url进行了任何更改?

答案 1 :(得分:0)

当你这样做时

if ($result) {
            $user = array(
                'id' => $result['id'],
                'username' => $result['username'],
                'password' => $result['password']
            );
            $this->session->set_userdata($user);
            redirect('admin/Dashboard');

您正在会话Cookie中设置密码。您真正需要做的就是设置用户名。 您还应该在Login function index()

中执行类似的操作
 if(result){
   $user = array(
        'name'         => $result['username]',
        'is_logged_in' => TRUE //add this to your session data
      );
      $this->session->set_userdata($user);
 }

然后在您使用的任何控制器中创建一个方法

public function is_logged_in()
{
    $is_logged_in = $this->session->userdata('is_logged_in');
    if (!isset($is_logged_in) || $is_logged_in != true)
    {
      redirect("admin/Login");
    }
}

当您在仪表板中时,可以使用$ this-&gt; is_logged_in();确保没有其他人进入您的仪表板或表格。在表格的顶部使用它来表单或只是进入仪表板 然后在你的网页上使用这样的东西

if($this->session->userdata('username') == true){
echo "Hello " .  $this->session->userdata('username'). nbs(3),    anchor("admin/Dashboard", " Go To Dashboard "); //this is all you need to get to your Dashboard if you are logged in.
}else {
echo " "; //doesnt show up if not logged in
}?>

它充当您网页上的链接,仅在您登录时显示。在所有Dashboard控制器方法的顶部添加$ is_logged_in();