какую функцию я должен использовать вместо redirect () в codeignitor? - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу, чтобы пользователь не переходил на мою страницу приветствия через URL, поэтому. Я добавил данные пользователя сеанса в конструктор, но перенаправление не работает, показывая «ERR_TOO_MANY_REDIRECTS» .. поэтому я использую header (), а также site_url и base_url, но не из них работают ...

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

            if (!$this->session->userdata('userId')) 
            return redirect('admin/index');
        }

            public function index()
            {


                $this->form_validation->set_rules('username', 'Username', 'required|alpha');
                $this->form_validation->set_rules('pass', 'password', 'required|max_length[12]');
                $this->form_validation->set_error_delimiters("<div class='text-danger'>","</div>");
                if($this->form_validation->run())
                {
                    $user=$this->input->post('username');
                    $pass=$this->input->post('pass');
                    $this->load->model('loginmodel');
                    $id=$this->loginmodel->isvalidate($user,$pass);
                    if($id)
                        {

                            $this->load->library('session');
                            $this->session->set_userdata('userId',$id);
                            return redirect('admin/welcome');

                        }
                    else
                        {
                            $this->session->set_flashdata('loginFailed','Invalid Username/password');
                            return redirect('admin/login');
                        }
                }
                else
                {
                    $this->load->view('admin/login');
                }
            }

        }

        ?>

1 Ответ

0 голосов
/ 16 апреля 2020

Конструктор позволяет инициализировать свойства объекта при создании объекта. Если вы создадите функцию __construct (), PHP автоматически вызовет эту функцию при создании объекта из класса. ( source )

В вашем коде администратор перенаправляет к администратору (при инициализации администратора запускается __construct(), что вызывает перенаправление к администратору снова.)

Мое предложение: проверять сеансы из метода индекса

public function index(){
    if(!$this->session->userdata('userId')){
       //code
    }else{
       $this->load->view('admin/login');
    }
}

Редактировать: Благодаря TimBrownlaw

Вы можете перенаправить на другой контроллер.

redirect('accounts/admin_login');
class Accounts extends MY_Controller {
    public function admin_login(){
        if($this->session->userdata('userId')){
             redirect('admin/index');
        }else{
            $this->load->view('admin/login');
         }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...