По умолчанию сессия php живет порядка 30 мин (задается в php.ini), так что это не вариант. Как уже написали, без использования БД единственный вариант - писать cookie при каждом переходе юзера на новую страницу и после авторизации отправлять его туда. А можно и без авторизации. Недостаток этого способа - не будет срабатывать при заходе с другого устройства (на котором еще нет ваших кук).
Ну самое очевидное и простое - в начале скрипта, который общий для всех страниц, пишем в сессию текущий УРЛ (если метод запроса GET). Далее, если авторизовались, то берем это значение из сессии и редиректим на него. Куда уж проще?)
1. сессия/кука - referer записывать на странице авторизации, после авторизации по нему уходить.
2. при переадресации на авторизацию в урл добавлять обратную ссылку.
При клике по ссылке не переходить на неё, перекрывать дефолтное действие, подгружать с нужного урла нужный блок и записывать его содержимое в блок контента на текущей странице