|
автор: кен (25.11.2004 в 16:39) |
|
| Помогите, пожалуйста! Как в рамках текущей PHP-сессии предотвратить возможность появления определёной страницы сайта в разных окнах браузера?
Сайт сделан на PHP и JavaScript (фреймы не используются). Работа сайта нарушается, если страница "n.php" оказывается открыта в разных окнах.
Такая ситуация возникает в трёх случаях:
1)если ссылку на страницу "n.php" открывают в новом окне.
2)если ссылку на другую страницу открывают в новом окне, а затем в обоих окнах переходят к "n.php".
3)в браузере Opera есть команда "окно -> копировать", создающая точную копию текущего окна (например, злосчастного "n.php").
Все эти случае нужно предотвратить. Желательно, с помощью PHP (до загрузки страницы), а если невозможно, то в JavaScript.
Что посоветуете? | |
|
|
|
|
|
|
|
для: кен
(25.11.2004 в 16:39)
| | Можно поиграться с именем окна.
Только окна, защищаемые от повторного открытия нужно открывать специальным образом:
Защищаем страницу index2.php
1. Используем JavaScript для открытия окна
<script language='javascript1.3'>
window.open("index2.php","win","");
</script>
|
win - имя окна
2. Либо используем ссылку с указанием имени окна в свойстве target
<a href="index2.php" target="win">Открыть</a>
|
На странице index2.php вставляет следующий код
<script language='javascript1.3'>
if (window.name=="")
{
alert("Открытие копии окна недопустимо");
close();
}
</script>
|
Т.е. если у окна нет имени (в случае создания несанкционированной копии), то выводится соответствующее предупреждение и производится попытка закрыть окно. | |
|
|
|
|
автор: кен (26.11.2004 в 15:57) |
|
|
для: glsv (Дизайнер)
(26.11.2004 в 00:59)
| | Идея хорошая и правильная! Что-то в этом роде я и думал, но забыл, что окна можно именовать. Спасибо за подсказку!
Но есть некоторые тонкости, которые нужно учесть.
Вариант 1) отпадает. Насколько мне известно, пауки-роботы поисковых систем игнорируют всё, что заключено в тегах "<script>" (Rambler точно!), а значит без обычной HTML-ссылки защищённая таким образом страница никогда не будет найдена и проиндексирована. А мне реально нужно раскручивать этот сайт и эту страницу в частности.
Вариант 2) мне не хотелось бы вынуждать гостя работать с защищённой страницей в другом особом окне. Я примерно сообразил как, используя имена, тем не менее обойтись одним окном. Но возник более общий вопрос:
- можно ли из одного окна обратиться к другому по имени: узнать, открыто ли оно; передать ему фокус и т.п.? (кроме случая, когда одно было создано из другого методом open() и между ними есть связь "opener" - это и так ясно). Мне такое обращение не удалось. | |
|
|
|
|
|
|
|
для: кен
(26.11.2004 в 15:57)
| | >можно ли из одного окна обратиться к другому по имени: узнать, открыто ли оно; передать ему фокус и т.п.?
>Мне такое обращение не удалось.
Хм, мне тоже. На JavaScript врядти такое возможно.
Возможно, здесь поможет использование других технологий: Java, аплеты..
В инете советуют обратить внимание вот на этот ActiveX - InternetExplorer.Application
PS: А вы заметили такую особенность если страница открыта с именем (хоть по ссылке, хоть JS), то второй раз ссылка и JavaScript c тем же именем не сработает. Т.е. страницу можно будет с именем можно открыть только один раз. | |
|
|
|