У меня есть одна проблема с моим входом в систему и представлениями, я хочу, чтобы после того, как пользователь вошел в систему и выйдет из сеанса, перенаправить меня в мой дом, но пользователь вставляет URL-адрес в корневой проект или URL-адрес входа, тогда он должен оставаться дома., мой код выглядит так

MY_Controller

protected function isLogged(){
        if (!$this->session->userdata('log'))
            redirect('login');
    }

Авторизоваться

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

class Login extends MY_Controller {
    public function __construct(){
        parent::__construct();
    }

    public function index(){
        $data['module'] = 'Login';
        $this->load->view('header',$data);
        $this->load->view('login');
    }

    public function getAccess(){
        $username = $this->input->post('username', TRUE);
        $password = $this->input->post('password', TRUE);
        $result = $this->user->login($username,$password);
        if (!empty($this->input->post('username')) && !empty($this->input->post('password'))) {
            if (!$result) {
                $this->json(array('error' => 'invalid username or password'));
            }else{
                $data_session = array(
                    'id' => $result['id'],
                    'first_name' => $result['first_name'],
                    'last_name' => $result['last_name'],
                    'type' => $result['profile_id'],
                    'logged_in' => TRUE 
                );
                $this->session->set_userdata('log',$data_session);
            }
        } else {
            $this->json(array('empty' => 'You did not fill out the required fields.'));
        }
    } 

    public function logout(){
        $this->session->sess_destroy();
        redirect('login','refresh');
    }
}

Домашний контроллер

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

class Home extends MY_Controller {

    public function __construct(){
        parent::__construct();
        $this->isLogged();
    }

    public function index(){
        $data = $this->session->userdata('log');
        $data['module']  = "Home";
        $data['fields']  = $this->getModules();
        $this->load->view('header',$data);  
        $this->load->view('index');
        $this->load->view('home');
        $this->load->view('footer');
    }
}

/* End of file Welcome.php */
/* Location: ./application/controllers/Welcome.php */
3
user5802782 7 Авг 2017 в 06:52
Почему вы не помещаете проверку сеанса в конструктор?
 – 
ankit suthar
7 Авг 2017 в 08:49
Я уже пробовал
 – 
user5802782
7 Авг 2017 в 09:08
Измените логику. Исключить перенаправление MY_Controller для незарегистрированных пользователей. Предполагается, что /login/index будет точкой входа для незарегистрированных пользователей. Но контроллер входа в систему расширяет MY_Controller, который активно проверяет пользователей и выполняет бесконечное перенаправление, если пользователь не вошел в систему. Маршрут для незарегистрированных пользователей не должен расширять такую ​​логику.
 – 
Tpojka
7 Авг 2017 в 10:26

2 ответа

Можешь попробовать

$this->login();

Или

redirect(base_url());

У меня такая же проблема в прошлый раз, когда я решил это с помощью функции islogged () во вспомогательном файле.

1
R.S Namdhari 7 Авг 2017 в 07:52
Вы имеете в виду after else redirect (base_url));
 – 
user5802782
7 Авг 2017 в 09:07
Попробуйте это, чем простое перенаправление -> перенаправление (base_url ('your_controller / your_method'));
 – 
R.S Namdhari
7 Авг 2017 в 13:02

Вы можете посмотреть, что этот код может быть полезным

Это мой контроллер входа в систему

  defined('BASEPATH') OR exit('No direct script access allowed');

class Login extends CI_Controller {
function __construct()
{
    parent::__construct();
    $this->load->helper(array('url','form','file'));
    $this->load->model(array('admin_model'));

    //print_r($_SESSION);
    // print_r($data['all_cats']);die();

}
public function index()
{
    if($this->input->post('submit')!='')
    {
        $email = $this->input->post('email');
        $pwd = $this->input->post('password');
        $login  = $this->admin_model->login($email,$pwd);
        if(!empty($login))
        {
            redirect('Welcome/dashboard');
        }
        else
        {
            $this->session->set_flashdata('error', 'Incorrect Login Details');
            $this->load->view('login');
        }
    }
    else
    {
        $auth = checkAdminLogin();
        if( $auth == 1) 
        {
            redirect('Welcome/dashboard');
        }
        else
        {
            $this->load->view('login');
        }
    }
}
}

И это мой контроллер приветствия

 defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {
function __construct()
{
    parent::__construct();
    $this->load->helper(array('url','form','file'));
    $this->load->model(array('admin_model'));
    $data['dbname']=$this->admin_model->get_db_name();
    $data['all_cats']=$this->admin_model->get_categories();
    $data['websites']=$this->admin_model->website_type();
    $data['sub_cats']=$this->admin_model->get_sub_cats();
    $admin_id=$this->session->userdata('adminId');
    if($admin_id == '')
    {
        redirect(base_url());
    }
    $this->load->vars($data);
    //print_r($_SESSION);
    // print_r($data['all_cats']);die();

}

// Admin Login Page 

 // End Function

// Redirect to Admin DashBoard
public function dashboard()
{
    $auth = checkAdminLogin();
    if( $auth == 1) 
    {
        $data = array();
        $this->load->view('index',$data);
    }
    else 
    {
        redirect('Welcome');
    }
}
// End Function

 // Logout Function 
public function logout()
{
    $this->session->unset_userdata('adminId');
    $this->session->sess_destroy();
    redirect('Login');
}
// End Function

// Manage Blog Categories
public function blog_categories($reload)
{

    $data['list']=$this->admin_model->blog_categories();
    if(isset($reload) && $reload !='')
    {
      $this->load->view('datatable',$data);
    }
    else{
    //print_r($data['list']);die();
    $this->load->view('users-list',$data);
}
}
1
R.S Namdhari 8 Авг 2017 в 06:47