CodeIgniter: динамическое перенаправление после входа в систему? - PullRequest
5 голосов
/ 25 января 2010

Я создаю базовый сайт CodeIgniter, который требует входа в систему, прежде чем вы сможете получить доступ к любому сайту.

Если пользователь заходит на какой-то URL сайта, что-то вроде этого:

http://www.mysite.com/project/detail/2049

И они в данный момент вышли из системы, у меня настроено автоматическое возвращение их на страницу входа.

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

Я подумал, может быть, динамически создать URL-адрес как скрытый элемент формы в форме входа и перенаправить туда при успешном входе в систему ... Что вы, ребята, думаете? Существует ли лучший / лучший метод для такого типа динамического перенаправления после входа в систему?

Ответы [ 4 ]

16 голосов
/ 25 января 2010

Когда они попадают на страницу с ограниченным доступом, запишите uri и установите его в качестве данных сеанса с помощью

this->session->set_userdata('redirect', 'page/uri/here');

затем перенаправить их на логин / зарегистрироваться

после входа в систему проверьте, присутствует ли «redirect» с

if($this->session->userdata('redirect'))
{
    redirect($this->session->userdata('redirect'));
}

если нет, то возьмите их туда, куда вы обычно берете их после входа в систему

0 голосов
/ 03 августа 2014

Я использую flashdata для перенаправления.

this->session->set_flashdata('redirect_url', 'page/uri/here');

после входа в систему проверьте, присутствует ли redirect_url с

if($this->session->flashdata('redirect_url'))
{
    redirect(base_url().$this->session->flashdata('redirect_url')));
}

Надеюсь, эта помощь

0 голосов
/ 27 января 2010

Почему вы не создаете значение сеанса при входе в систему, а затем проверяете его на каждой странице, необходимой для защиты?

Создайте его в библиотеке, чтобы вы могли вызывать следующее:

$this->mylibrary->login($user);

и

$this->mylibrary->is_logged_in($user); в верхней части каждой страницы и автоматически перенаправляет посетителей на ваш основной сайт.

0 голосов
/ 26 января 2010

при попытке доступа:

redirect('/public/login/r'.$this->uri->uri_string());

так что в вашем случае после перенаправления URL может выглядеть так:

http://www.example.com/public/login/r/project/detail/2049

при успешном входе

$uri = $this->uri->uri_string();
$redirect = substr($uri, strpos($uri, '/r/')+2);
redirect($redirect);

перенаправит на исходный ресурс.

(и нет, +2 не должно быть +3)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...