CodeIgniter - Как перенаправить пользователя после входа в систему к предыдущей попытке маршрута - PullRequest
0 голосов
/ 26 мая 2018

В рамках CodeIgniter у меня есть страница администратора внутри AdminController, внутри ее конструктора я ставлю проверку, если пользователь не вошел в систему, а затем перенаправляю на страницу входа.

И в LoginController после успешного входа в систему я хочу, чтобы пользователь перенаправил на предыдущую страницу администратора.

Из разных примеров я пробовал:

$this->load->library('user_agent');
$this->session->set_userdata('redirect_back', $this->agent->referrer());

А также

$_SERVER['HTTP_REFERER']);

Но оба возвращают мне пустую строку.

Как я могу исправитьэта проблема.

1 Ответ

0 голосов
/ 27 мая 2018

В вашем файле AdminController перед перенаправлением на LoginController сохраните текущий URL в переменную сеанса:

$referrer_value = current_url().($_SERVER['QUERY_STRING']!=""?"?".$_SERVER['QUERY_STRING']:"");
$this->session->set_userdata('login_referrer', $referrer_value);
// redirect to login page

В вашем LoginController при успешном входе в систему проверьте, является ли сеанс login_referrer сессииимеет значение.Если затем произойдет перенаправление с использованием значения этого.

if($this->session->userdata('login_referrer')!=""){
    $tmp_referrer = $this->session->userdata('login_referrer');
    $this->session->unset_userdata('login_referrer');
    redirect($tmp_referrer);
}

Вам может потребоваться вызвать следующее, чтобы загрузить необходимую библиотеку и помощник для успешного выполнения вышеуказанного кода.

$this->load->helper('url');
$this->load->library('session');
...