Intereting Posts
как исправить искаженный JSON в php Правила валидации Laravel, если значение существует в другом массиве полей Как я могу использовать CodeIgniter для загрузки определенных страниц с использованием SSL? Как я могу отправить дату с одного сайта на другие сайты? Drupal 6 Просмотров 2: Настройка аргументов даты PHP array_push не правильная функция, что использовать? Что я должен назвать своим файлом класса PHP? PDO: Как проверить, действительно ли соединение активно, для реального? Как получить последнее значение автоматического прироста в качестве внешнего ключа для другой таблицы в php Yii2: Как поместить нулевые значения в конец списка объектов при сортировке по возрастанию? Расширение php SoapClient для проверки подлинности на сайтах Каковы хорошие инструменты / рамки для i18n php codebase? php echo first row wait / sleep, тогда эхо вторая строка рекурсивная функция для получения всех дочерних категорий Отправленные письма с phpmailer не отправляются в папку «Отправленные» IMAP

CodeIgniter: динамическое перенаправление после входа?

Я создаю базовый сайт 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'))); } 

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