Я создаю базовый сайт CodeIgniter, который требует входа в систему, прежде чем вы сможете получить доступ к любому сайту.
Если пользователь посещает URL-адрес какого-либо сайта, что-то вроде этого:
http://www.mysite.com/project/detail/2049
И они в настоящее время вышли из системы, я установил автоматическое отключение их обратно на страницу входа.
Мой вопрос, после входа в систему, как лучше всего перенаправить их на исходный URL-адрес, на который они набрали, вместо того чтобы перенаправить их на домашнюю страницу веб-сайтов?
Я подумал, может быть, динамически создать URL-адрес в виде скрытой формы в форме входа и перенаправить туда после успешного входа в систему … Что вы, ребята, думаете? Существует ли лучшая / лучшая практика для такого типа динамического перенаправления после входа?
Когда они нажимают на ограниченную страницу, записывают uri и устанавливают ее как данные сеанса с помощью
this->session->set_userdata('redirect', 'page/uri/here');
затем перенаправить их в логин / регистр
после проверки входа в систему, чтобы увидеть, присутствует ли «перенаправление» с
if($this->session->userdata('redirect')) { redirect($this->session->userdata('redirect')); }
если он не берет их, где бы вы их обычно не принимали после входа в систему
когда попытка доступа перехвачена:
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)
Почему вы не создаете значение сеанса при входе в систему, а затем проверяете его на каждой странице, необходимой для обеспечения безопасности?
Постройте его в библиотеке, чтобы вы могли вызвать следующее:
$this->mylibrary->login($user);
а также
$this->mylibrary->is_logged_in($user);
поверх каждой страницы и автоматически перенаправлять посетителей на ваш основной сайт.
Я использую 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'))); }
Надеюсь, что эта помощь