Перенаправление на исходную страницу после входа в систему (Codeigniter)

Весь веб-сайт требует, чтобы пользователь заходил на сайт перед просмотром страницы. Если пользователь не вошел в систему, он перенаправляется на страницу входа / регистрации.

Проблема. Когда пользователь, не зарегистрированный в типах в URL-адресе, например http://www.domain.com/listings/1234 , ему будет показана эта страница, но с затемненной страницей, которая препятствует взаимодействию пользователя со страницей (jQuery, не проблема здесь) и всплывающее модальное поле со ссылкой на страницу входа в систему (Tank Auth) http://www.domain.com/login .

После входа на страницу входа в систему пользователь будет перенаправлен обратно на обычную страницу, которую вы получите после входа в систему, то есть: http://www.domain.com но на этой странице передается переменная 1234 .

Вкратце : я хочу, чтобы пользователь, который не вошел в систему и вошел на веб-сайт по адресу http://www.domain.com/listings/1234 НЕ будет перенаправлен на http://www.domain.com/login еще , но вместо этого останется на http://www.domain.com/listings/1234 и будет показан модальный бокс со ссылкой на страницу входа в систему http://www.domain.com/login где, если он войдет в систему, он будет перенаправлен назад к http://www.domain.com/ вместо обычной страницы, которую он получает после входа в систему и передается переменной 1234 .

Как это можно сделать с помощью Codeigniter?

Это то, что у меня есть сейчас:

Контроллер списков

 function index(listing_id) { $this->load->module('auth'); if(!$this->auth->tank_auth->is_logged_in()) { redirect('login'); } // Some calls to database etc here... $this->load->view('listings', $data); } в function index(listing_id) { $this->load->module('auth'); if(!$this->auth->tank_auth->is_logged_in()) { redirect('login'); } // Some calls to database etc here... $this->load->view('listings', $data); } 

    Есть несколько способов, которыми ваш вопрос может быть достигнут. Надеемся, что это решение даст некоторые идеи о том, как это сделать.

    В приведенном ниже решении используется диалог jquery ui для отображения модального и jquery .ajax для обработки заявки на регистрацию.

    Условно поставьте этот код внизу страницы перед </body> если пользователь не вошел в систему.

     <?php if($this->auth->tank_auth->is_logged_in()){ ?> <div id="dialog-wrap" class="modal" > <?php echo $this->load->view('login_form'); ?> </div> <script> $('#dialog-wrap').modal({ modal: true, autoOpen: true, }); $('#login-form').submit(function(){ //use .ajax to submit login form and check credentials. $.ajax({ type: 'POST', url: <?php echo base_url(); ?>"login.php", data: "username="+$('username').val()+'&password='+$('password').val(), dataType: 'json', success: function(returnData){. if(returnData.status){ //close modal box }else { //display message that login failed. } } }); }); </script> ?> 

    Ваш контроллер входа в систему ajax

     function login(){ //Use tank auth to validate login information. if(authentication is successful) { $return_data = array( 'status' => true, 'msg' => 'Login Successful' ); }else { $return_data = array( 'status' => false, 'msg' => 'Login failed' ); } //Use echo instead of return when you are sending data back to an jquery ajax function. echo json_encode($data); } 

    Если вы сделаете это так, то вам не придется полагаться на переадресацию codeigniter, все будет обработано через ajax.

    Надеюсь, это даст вам представление о том, как справиться с этим.