Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как предотвратить открытие страницы в разных окнах
 
 автор: кен   (25.11.2004 в 16:39)
 
 

Помогите, пожалуйста! Как в рамках текущей PHP-сессии предотвратить возможность появления определёной страницы сайта в разных окнах браузера?
Сайт сделан на PHP и JavaScript (фреймы не используются). Работа сайта нарушается, если страница "n.php" оказывается открыта в разных окнах.
Такая ситуация возникает в трёх случаях:
1)если ссылку на страницу "n.php" открывают в новом окне.
2)если ссылку на другую страницу открывают в новом окне, а затем в обоих окнах переходят к "n.php".
3)в браузере Opera есть команда "окно -> копировать", создающая точную копию текущего окна (например, злосчастного "n.php").
Все эти случае нужно предотвратить. Желательно, с помощью PHP (до загрузки страницы), а если невозможно, то в JavaScript.
Что посоветуете?

   
 
 автор: glsv (Дизайнер)   (26.11.2004 в 00:59)   письмо автору
 
   для: кен   (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" - это и так ясно). Мне такое обращение не удалось.

   
 
 автор: glsv (Дизайнер)   (28.11.2004 в 19:37)   письмо автору
 
   для: кен   (26.11.2004 в 15:57)
 

>можно ли из одного окна обратиться к другому по имени: узнать, открыто ли оно; передать ему фокус и т.п.?
>Мне такое обращение не удалось.
Хм, мне тоже. На JavaScript врядти такое возможно.
Возможно, здесь поможет использование других технологий: Java, аплеты..
В инете советуют обратить внимание вот на этот ActiveX - InternetExplorer.Application

PS: А вы заметили такую особенность если страница открыта с именем (хоть по ссылке, хоть JS), то второй раз ссылка и JavaScript c тем же именем не сработает. Т.е. страницу можно будет с именем можно открыть только один раз.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования