Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как сделать чтоб открывалось только через GreyBox

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Jnas
Отправлено: 27 Сентября, 2010 - 14:58:30
Post Id



Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Добрый день!

Думаю использовать на своем сайте скрипт GreyBox
следующим образом:
- есть у меня на сервере localhost/www/panel/cabinet.php
- скрипт GreyBox лежит в localhost/www/panel/index.php - и данный скрипт открывает cabinet.php (как в примере на сайте greybox с "Launch google.com in fullscreen window")

как сделать так чтоб cabinet.php открывалась только через GreyBox, но при этом введя в строку браузера http://localhost/panel/cabinet.php ничего не выходила, то есть осуществить работу только черех Greybox.

P.S. извините за тавтологию, голова кругом уже....
 
 Top
Uchkuma
Отправлено: 27 Сентября, 2010 - 16:02:37
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Т.е. файл cabinet.php внедрен в файл index.php через include или require и нужно запретить его открытие напрямую?
Я тут вижу 2 решения:
1. Запретить к нему доступ через .htaccess
2. В index.php установить константу, а в самой верхней строчке в cabinet.php проверять ее наличие. Если константа не установлена, делать exit. Т.о. если попробовать открыть файл cabinet.php напрямую, программа сразу же будет завершена, т.к. константа не установлена.
 
 Top
Jnas
Отправлено: 28 Сентября, 2010 - 09:06:47
Post Id



Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Спасибо за ответ... я только учусь , по этой причине возникло сразу два вопроса к ответу...
1. Пробовал через .htaccess закрыть, в результате через greybox тоже не смог открыть данный файл
2. прописал константу, вроде всё работает, но...
когда открываешь первый раз появляется надпись "Вход в личный кабинет"
нажимаешь на неё и через greybox открывается cabinet.php, если далее закрыть это окно greybox и нажать снова выдает по коду (Доступ закрыт) будто я его хочу открыть через строку браузера. Как бы ясно в чем дело, в чем ошибка, а как можно прописать чтоб константа устанавливалась после нажатия на надпись, и при этом в исходном коде её не видно было бы.... код ниже.
заранее спасибо

код index.php
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  4.  
  5. <head>
  6.     <title>Вход в личный кабинет</title>
  7.  
  8.     <script type="text/javascript">
  9.        var GB_ROOT_DIR = "./greybox/";
  10.    </script>
  11.  
  12.     <script type="text/javascript" src="greybox/AJS.js"></script>
  13.     <script type="text/javascript" src="greybox/AJS_fx.js"></script>
  14.     <script type="text/javascript" src="greybox/gb_scripts.js"></script>
  15.     <link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" media="all" />
  16. </head>
  17. <body>
  18. <a href="cabinet.php" title="Вход в личный кабинет" rel="gb_page_fs[]">Вход в личный кабинет</a>
  19.  
  20. <?php
  21. $_SESSION['admin_id] = 5;
  22. ?>
  23. </body>
  24. </html>
  25.  


код cabinet.php :
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. if ($_SESSION['admin_id'] == 5)
  4.    {
  5. echo "Доступ открыт";
  6. $_SESSION['admin_id'] = 0;
  7. }
  8.    else
  9.    {
  10.        echo "Доступ закрыт";
  11.        exit;
  12.    }
  13. ;
  14. ?>
 
 Top
Uchkuma
Отправлено: 28 Сентября, 2010 - 10:18:48
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Не зря я всех заставляю подробно описывать задачу.
Во-первых, я не знаю как работает GreyBox.
Во-вторых, вы не ответили на мой первый вопрос.

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

Чтобы страница загружалась в iframe только из вашего окна (из вашей родительской страницы), можно на этой странице сделать javascript-проверку на совпадение с url вашего родительского окна. Если url отличается от вашего, либо родительского окна вообще нет (т.е. страница была открыта напрямую), тогда делать редирект на вашу родительскую страницу с GreyBox. Обратиться к адресу родительского окна из дочернего можно через свойство parent.location.href.
(Добавление)
Собственно средствами PHP ваш вопрос не решается, так что могу перенести вашу тему в раздел посвященный javascript, если хотите.
 
 Top
Jnas
Отправлено: 28 Сентября, 2010 - 15:29:26
Post Id



Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Извиняюсь, вопроса не заметил, всё на лету прочитал...
да, совершенное верно, нужно запретить открытие напрямую...
Если этот вопрос не по PHP то тогда не против переноса, наоборот "ЗА". (спасибо!)
 
 Top
Uchkuma
Отправлено: 28 Сентября, 2010 - 18:33:59
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Uchkuma пишет:
Если url отличается от вашего, либо родительского окна вообще нет (т.е. страница была открыта напрямую), тогда делать редирект на вашу родительскую страницу с GreyBox. Обратиться к адресу родительского окна из дочернего можно через свойство parent.location.href.
Думал сами сделаете. Вот что я имел ввиду:
CODE (javascript):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2. if(parent == 'undefined' || parent.location.href != 'http://yoursite.ru/index.php'){
  3. parent.location.href = 'http://yoursite.ru/index.php';
  4. }
  5. </script>
Это необходимо разместить на странице cabinet.php и желательно в самом верху.
 
 Top
Jnas
Отправлено: 28 Сентября, 2010 - 21:43:50
Post Id



Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Спасибо Вам за код, к сожалению и этого я не смог бы написать, так как яваскрипты еще не освоил...
Вечер целый смотрел на примеры из функции с parent.location.href так и не смог решить следующую проблему.
Сложилась следующая ситуация, при открывание index.php, появляется надпись "Вход в личный кабинет", после её нажатия окно greybox открывает заново index.php с той же надписью (короче возникает окно в окне), и после следующего нажатия на надпись происходит вход, как в примере
 
 Top
Uchkuma
Отправлено: 28 Сентября, 2010 - 22:38:28
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Jnas пишет:
и после следующего нажатия на надпись происходит вход, как в примере
Аххах )) Практически эффект Дросте!
Я штук 20 окон в окне открыл, пока не надоело Радость
 
 Top
JustUserR
Отправлено: 29 Сентября, 2010 - 00:25:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Jnas пишет:
Как сделать так чтоб cabinet.php открывалась только через GreyBox
Фактически не существует средств позволяющих однозначно запретить проведения некоторыз действий на клиенткой стороне - особенно при функциональной их реализации на интерпретируемом языке JS без шифрования кода - тем не менее возможно применять такие средства которые в максимальной мере усложнят процесс выполнения нерегламентированных действий
В частности возможна схема реализуемая следующим образом - первоначально пользователь производит открытие некоторой контейнерной статической HTML-страницы с основным JS-скриптом и осуществляет запрос к специальному web-ресурсу на вашем сайте - который производит генерации случайного кода являющегося хеш-значением и действительного в течение ограниченного времени для фиксированного удаленного IP-адреса и открытой информации по конфигуарции браузера - в таком случае вложенная страница может производить показ содержимого только при наличии правильного кода авторизации - такой подход в общем случае используется для обеспечения работы безопасных сеансовых cookie-данных


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Jnas
Отправлено: 29 Сентября, 2010 - 06:20:45
Post Id



Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Спасибо всем!
в вроде как сделал, и вроде как нормально работает
в cabinet.php добавил код
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <SCRIPT LANGUAGE="JavaScript">
  3. if (parent.location.href == self.location.href) {
  4. window.location.href = 'http://localhost/index.php';
  5. }
  6. </script>
  7.  
 
 Top
JustUserR
Отправлено: 30 Сентября, 2010 - 17:31:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Jnas пишет:
В вроде как сделал, и вроде как нормально работает
Приведенный вами JS-код для ограничния текущей HTML-страницы которая допускает просмотр возможно игнорировать несколькими способами - в частности возможно использовать JS-скрипт с опередающей обработкой который будет осуществлять удаление вашего JS-кода до начала его фактического исполнения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB