Сценарий выхода из PHP с 4 кадрами в наборе фреймов

У меня есть учебный файл logout.php, который работает фантастически, однако проблема, с которой я столкнулся, заключается в том, чтобы поместить скрипт на новый административный сайт в стиле интрасети, который использует 4 фрейма в наборе фреймов (заголовок, левый, центральный, правый).

Есть два требования, которые мне нужно выполнить, и мне очень трудно найти решение (да, я знаю, что фреймы - отстой для современных потребительских сайтов, но повторюсь, это для внутренней панели администрирования системы с виджетами повсюду).

  1. Когда пользователь нажимает кнопку «Выход» в верхнем фрейме, ВСЯ страница направляется на logout.php, который затем перенаправляет на одну страницу «home.php». На данный момент нажатие на выход из системы приводит только этот конкретный кадр к желаемому месту назначения.

  2. Когда пользователь входит в систему, создаются переменные SESSION, которым присваивается значение true; если страницы посещаются без SESSION[validated]= true, пользователь выходит из системы. Как и выше, ЕСЛИ это произойдет, мне нужен ВЕСЬ набор фреймов, направленный на logout.php.

Я пытаюсь добиться этого без javascript (поскольку его, очевидно, можно просто отключить, а JS не является настоящей мерой безопасности).

Кто-нибудь когда-нибудь занимался этим вопросом в прошлом?


person JM4    schedule 05.11.2010    source источник


Ответы (2)


Кнопка выхода - это ссылка? Если да, то нельзя ли использовать target="_parent", чтобы изменить страницу с набором фреймов?

Изменить
Re #2: Если время сеанса истекло, вы можете создать промежуточную страницу со ссылкой, которая использует target=_parent и приведенный ниже код JavaScript, оба из которых выйдут за рамки.

<script type="text/javascript">
if (top.location != self.location) top.location = 'login.php'
</script>

Это хорошо, потому что если у них включен JavaScript, они даже не заметят, а если нет, то все равно вырвутся из фреймов.

person Richard Marskell - Drackir    schedule 05.11.2010
comment
кажется, вы обращаетесь к части 1 выше, но в этом случае я попытался сделать именно это, и по какой-то причине он дал сбой и не вышел из системы, как следует для всех страниц (т.е. я мог тогда написать определенный URL-адрес фрейма и получить доступ к странице. Я изменю снова, чтобы настроить.Есть идеи по # 2? - person JM4; 05.11.2010
comment
@ JM4 - По поводу № 2, я не думаю, что это возможно без использования javascript. - person Richard Marskell - Drackir; 05.11.2010
comment
@ JM4 - я добавил пример того, как это сделать с помощью js. - person Richard Marskell - Drackir; 05.11.2010

Решение части 1:

Сделайте кнопку выхода из системы следующим образом:

<a href="/logout.php" target="_top">logout</a>

Затем заставьте logout.php выполнить всю тяжелую работу по выходу из системы (возможно, просто очистив сеанс), а затем перенаправить пользователя на правильный набор фреймов (используйте команду заголовка PHP для перенаправления).

Решение части 2:

Это не должно происходить случайно. Если вы входите в систему, для вашего сеанса устанавливается значение validated = true. Вы не «сталкиваетесь» со страницей, где ваши сеансы происходят иначе.

Тем не менее, вы можете включить файл PHP (или, если вы были достаточно умны, чтобы сделать это, сделать это в вашей единой точке входа), чтобы перенаправить на страницу выхода, если ваш сеанс каким-либо образом признан недействительным. См. 1 выше.

person dyve    schedule 05.11.2010
comment
Касательно № 2: Возможно, время ожидания вашего сеанса истекло, и один кадр будет опубликован/обновлен и выяснится, что время ожидания истекло. - person Richard Marskell - Drackir; 05.11.2010
comment
Ты прав. Это может быть решено проверкой в ​​глобальной PHP/единой точке входа с перенаправлением, если сессия стала недействительной. - person dyve; 06.11.2010