Скрипт защиты от прямого входа

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Аватара пользователя
Asped
WEB Team
WEB Team
Сообщения: 184
Зарегистрирован: 02 янв 2011, 20:34

Re: Скрипт защиты от прямого входа

Сообщение Asped »

Александр
Отдельно код с выводом какой-нибудь строки работает. Все как надо, но если выводить что-то объёмное...

Как пример буду использовать страницу:

Код: Выделить всё

 <head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title> 404error //  Спасибо turbofilm.tv за флешки ;)</title>    <link rel="stylesheet" type="text/css" href="http://turbofilm.tv/media/css/zero.css" /> <script type="text/javascript">function r_flash(){  var b=[];  b[0]='<embed src="http://turbofilm.tv/media/swf/404/032.swf" width="428" height="319"></embed>';  b[1]='<embed src="http://turbofilm.tv/media/swf/404/007.swf" width="428" height="319"></embed>';  b[2]='<embed src="http://turbofilm.tv/media/swf/404/004.swf" width="428" height="319"></embed>';  b[3]='<embed src="http://turbofilm.tv/media/swf/404/057.swf" width="428" height="319"></embed>';  b[4]='<embed src="http://turbofilm.tv/media/swf/404/061.swf" width="428" height="319"></embed>';  b[5]='<embed src="http://turbofilm.tv/media/swf/404/069.swf" width="428" height="319"></embed>';  b[6]='<embed src="http://turbofilm.tv/media/swf/404/088.swf" width="428" height="319"></embed>';    var i=Math.floor(Math.random()*b.length);  document.write( b[i] );}  </script>    </head>  <body><div id="zero">    <div class="pagetv">        <span class="errorblock">            <script>r_flash()</script>        </span>    </div></div> </body></html> 
Берем наш скрипт.

И получаем это? Токо она не работает.

Код: Выделить всё

  <head>     <title>404 полный error //  Спасибо turbofilm.tv за флешки ;)</title>     <link rel="stylesheet" type="text/css" href="http://turbofilm.tv/media/css/zero.css" />    <script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script>  <script type="text/javascript">function r_flash(){  var b=[];  b[0]='<embed src="http://turbofilm.tv/media/swf/404/032.swf" width="428" height="319"></embed>';  b[1]='<embed src="http://turbofilm.tv/media/swf/404/007.swf" width="428" height="319"></embed>';  b[2]='<embed src="http://turbofilm.tv/media/swf/404/004.swf" width="428" height="319"></embed>';  b[3]='<embed src="http://turbofilm.tv/media/swf/404/057.swf" width="428" height="319"></embed>';  b[4]='<embed src="http://turbofilm.tv/media/swf/404/061.swf" width="428" height="319"></embed>';  b[5]='<embed src="http://turbofilm.tv/media/swf/404/069.swf" width="428" height="319"></embed>';  b[6]='<embed src="http://turbofilm.tv/media/swf/404/088.swf" width="428" height="319"></embed>';    var i=Math.floor(Math.random()*b.length);  document.write( b[i] );}  </script> </head><body><script type="text/javascript" charset="cp1251" >window.onload = (function() {    try {        // если VK.init выполнено, то значит приложение открыто вконтакте        VK.init(function() {            // выполняем код приложения            VK.loadParams(document.location.href);            var viewer_id = VK.params.viewer_id;            document.write('<div id="zero"><div class="pagetv"><span class="errorblock"><script>r_flash()<\script><\span><\div><\div>');        });    } catch (e) {        // VK.init не выполнено, приложение открыто не в контакте        alert('Откройте приложение вконтакте');    }           });</script></body> 
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Скрипт защиты от прямого входа

Сообщение Александр »

Это что?

Код: Выделить всё

<\script><\span><\div><\div>
теги закрываются в другую сторону.

Код: Выделить всё

</script></span></div></div>
в твоём коде слеши надо заэкранировать

Код: Выделить всё

document.write('<div id="zero"><div class="pagetv"><span class="errorblock"><script>r_flash()<\/script><\/span><\/div><\/div>');
Учись выявлять ошибки, постепенно упрощая код.
Аватара пользователя
Asped
WEB Team
WEB Team
Сообщения: 184
Зарегистрирован: 02 янв 2011, 20:34

Re: Скрипт защиты от прямого входа

Сообщение Asped »

А если код большой,все приложение? таким же методом?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Скрипт защиты от прямого входа

Сообщение Александр »

Asped
Не знаю. Учись, практикуйся.
Я не знаю уровень твоих знаний, какими способами ты учишься и что ты хочешь сделать.
Я бы вообще вряд ли использовал document.write.
Аватара пользователя
Asped
WEB Team
WEB Team
Сообщения: 184
Зарегистрирован: 02 янв 2011, 20:34

Re: Скрипт защиты от прямого входа

Сообщение Asped »

А что лучше использовать вместо документ.райт ?

В скрипте который ты привел в начале темы, как планировалось выводить большие куски кода? php, html
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Скрипт защиты от прямого входа

Сообщение Александр »

Asped писал(а):А что лучше использовать вместо документ.райт ?
Зависит от твоих целей.
Часто удобнее использовать document.getElementById('id').innerHTML
Asped писал(а):В скрипте который ты привел в начале темы, как планировалось выводить большие куски кода? php, html
Я привел скрипт, который используется в приведенном тобой примере. С чего ты взял, что в нём можно выводить php? Для вывода php лучше будет придумать какой-то другой способ защиты, который будет осуществляться в php скрипте, а не яваскриптом. Каким способом - не знаю.
Вывести большой кусок html можно, уже написано как. Но ты подумай что тогда у тебя будет в коде... Опять же можно использовать document.getElementById и т.п.
Нужно только логику продумать.
Аватара пользователя
Asped
WEB Team
WEB Team
Сообщения: 184
Зарегистрирован: 02 янв 2011, 20:34

Re: Скрипт защиты от прямого входа

Сообщение Asped »

Спасибо за подсказки. В общем все понял :)
hzkto1
Сообщения: 17
Зарегистрирован: 21 дек 2010, 17:58

Re: Скрипт защиты от прямого входа

Сообщение hzkto1 »

Насколько я помню в пхп можно получить адресс страницы с которой перешли, его можно проверить регулярными выражениями на соответствие vkontakte.ru и vk.com и выдавать целевую страницу если пользователь пришел с них, а если нет делать редирект на вконтакте.
Аватара пользователя
Влад
Модератор
Модератор
Сообщения: 654
Зарегистрирован: 29 апр 2010, 22:24

Re: Скрипт защиты от прямого входа

Сообщение Влад »

Написал по этому поводу урок http://flapps.ru/forum/topic2220.html
Ответить