Как определить источник перенаправления заголовка - PullRequest
2 голосов
/ 23 марта 2011

Мне нужно найти способ, которым цель перенаправления header () может определить, какая страница инициировала перенаправление.Мы используем хак mod_auth_cas для проверки логинов.Так как мы не можем иметь весь сайт за mod_auth_cas, у нас есть подкаталог с AuthType Cas в .htaccess.для логинов мы даем ссылку на каталог / cas, cas обрабатывается, возвращенный идентификатор пользователя добавляется в $ _SESSION и сравнивается с нашей базой данных разрешений, затем страница перенаправляется в заголовок на домашнюю страницу.

Этот танец хорошо работает, когда вы просто возвращаетесь на домашнюю страницу, но мы бы хотели, чтобы страницы, для которых требуется логин, перенаправлялись в cas, когда в $ _SESSION нет идентификатора пользователя.И когда пользователь входит в систему и мы получаем идентификатор пользователя, он перенаправляет обратно на страницу, которая его туда отправила, а не на домашнюю страницу.И эта возможность оглядываться на исходную страницу перенаправления заголовка была бы полезна в других частях сайта.

Как файл /cas/index.php может определить, с какой страницы произошла переадресация?Как избежать столкновения, когда у пользователя открыто несколько страниц, он одновременно перенаправляется в cas на одной, переходит на вторую страницу, где они также перенаправляются в cas, завершается, когда cas возвращается к первой, завершает ееснова и перенаправляется на вторую страницу, а не на первую?И это решение должно быть чисто PHP, без отслеживания JavaScript.

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

Есть несколько способов сделать это.

-Либо сохранить исходный URL-адрес в сеансе до перенаправления

-На странице входа получите URL-адрес ссылки из $Переменная _SERVER и перенаправление на нее после входа в систему

-Настройка вашего перенаправления, чтобы он добавлял текущий URL к переменным get / post на странице входа в систему - noaccess.php перенаправляет на login.php? Ret_url = noaccess.php (вы, вероятно, захотите использовать полный URL и кодировать его по URL)

0 голосов
/ 23 марта 2011

Без изменения или добавления какого-либо кода вы можете установить расширение XDebug php и включить профилирование.Он выложит файл cachegrind, содержащий информацию о стеке вызовов.Вы можете открыть его как-то вроде kcachegrind, чтобы получить визуальное представление о том, когда произошел вызов header ().

...