PHP Logout Script с 4 кадрами в наборе кадров - PullRequest
0 голосов
/ 05 ноября 2010

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

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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 05 ноября 2010

Является ли кнопка выхода из системы ссылкой? Если это так, вы не можете использовать target="_parent", чтобы заставить его изменить страницу с помощью frameset?

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

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

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

0 голосов
/ 05 ноября 2010

Решение для части 1:

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

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

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

Решение для части 2:

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

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

...