@BuBux

Как организовать перенаправление?

Сайт личного кабинета. Если мне кидают ссылку на, что внутри лк и при переходе по ссылке я не залогинен, то меня перенаправляет на страницу со входом. Но после того как я залогинюсь меня кидает на главную страницу, а не по ссылке по которой я перешел. Как это решить?
P.S. Ссылку перехода я получаю из $_SERVER['REQUEST_URI']
Допустим ссылка перехода domen.ua/task/view/85
У меня есть класс TaskController, который наследуется от базового класса BaseController. BaseController:
class BaseController {
    public function __construct() {
        $_SESSION['adress'] = $_SERVER['REQUEST_URI']; // тут я и записываю в сессию ссылку, по которой перешли. Понимаю что в сессию записывать не правильно
        User::checkAuth();
    }
}

Функция checkAuth:
function checkAuth() {
    	include 'config/config.php';
        //если не авторизован, переадресовываем на страницу авторизации
        if(!User::isAuth()) {
           header("Location: ".$s_prefix."/user/login");
        } else {
            Registry::set('user', $_SESSION);
            return true;
        }
}

Функция isAuth:
function isAuth() {

        if(!isset($_SESSION['is_auth'])) return false;
        if(!($_SESSION['is_auth'] === TRUE)) return false;

        User::checkLive(); //проверяем, нужно ли убить сессию
        return true;
    }

Функция авторизации:
public function actionLogin() {
    // проверки всякие...
    
    // если всё хорошо
    if ($update) {
        header("Location: " . $_SESSION['adress']);
        unset($_SESSION['adress']);
      } else {
           $msg_title = "Ошибка";
            $msg_cont = "Error 111";
      }
}
  • Вопрос задан
  • 157 просмотров
Пригласить эксперта
Ответы на вопрос 2
Можно при перенаправлении на страницу входа передавать на неё GET-параметр со ссылкой на ту страницу, на которую надо будет перенаправить пользователя после входа
Ответ написан
Добавьте в форму авторизации скрытое поле в которые пишите ссылку с которой пользователь был перенаправлен на форму, а после успешной авторизации делайте обратный редирект.

input type="hidden" name="AuthRedirect" value="<?php echo $_SERVER['HTTP_REFERER']; ?>"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы