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

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

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

Сообщение Asped »

Кто может поделится вот таким скриптом?

Который запрещает обращаться к приложению через сайт

Не реклама:

http://h3069.ptzhost.com/cinema/index0.html
Аватара пользователя
ukhov
Модератор
Модератор
Сообщения: 1343
Зарегистрирован: 04 янв 2011, 21:19

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

Сообщение ukhov »

проверку ключа, id пользолвателя и id приложения поможет
Аватара пользователя
BaCo
Сообщения: 76
Зарегистрирован: 28 дек 2010, 11:48

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

Сообщение BaCo »

Если вот эта фигня:

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

parent.frames.length
равна 0, то это прямой вход, если равна 1 и больше, то зашли через фрейм.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

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

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

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

<html><head><script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script><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.getElementById('user_info').innerHTML = 'Ваш id ' + viewer_id;        });    } catch (e) {        // VK.init не выполнено, приложение открыто не в контакте        alert('Откройте приложение вконтакте');    }            });</script></head><body><div id="user_info">http://flapps.ru</div></body></html>
Аватара пользователя
Asped
WEB Team
WEB Team
Сообщения: 184
Зарегистрирован: 02 янв 2011, 20:34

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

Сообщение Asped »

Этот скрипт просто выводит окно с предупреждением о входе не через контакт. Жмешь "ок". И все как обычно.

Что я не так делаю?


З.Ы, Просто 1 в 1 вставил скрипт как выше. В приложение показывает ID ,а на сайте ссылку на флаппс. Ну по идеи так и должно быть ? Хорошо, тогда как его прикрутить к приложению так сказать.
Godliker
Сообщения: 30
Зарегистрирован: 13 июн 2010, 18:23

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

Сообщение Godliker »

Алекксандр,
Пробовал сегодня этот код. Ничего не вышло. вместо алерта

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

alert('Откройте приложение вконтакте');
заменил на:

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

location.href='http://vk.com/app123456';
для редиректа/ Когда тестирую просто код, как он представлен вами все работает.
А когда в свой начинаю вставлять 0 реакции. что это может быть?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

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

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

Asped
А надо что?

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

<div id="user_info">http://flapps.ru</div>
Это выводится в любом случае. Только если приложение открыто вконтакте, то содержимое блока #user_info заменяется на 'Ваш id '. Если не в контакте, то не заменяется.

Читай комментарии в коде

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

// если VK.init выполнено, то значит приложение открыто вконтакте
после этой строчки пиши код своего приложения

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

// VK.init не выполнено, приложение открыто не в контакте
после этой строчки пиши код, который будет выполнятся если приложение открыто не в контакте.


Godliker
Уверен что применяешь правильно?
Между

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

try {     }
Должна быть инициализация Vk

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

        VK.init(function() {        });
Аватара пользователя
Asped
WEB Team
WEB Team
Сообщения: 184
Зарегистрирован: 02 янв 2011, 20:34

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

Сообщение Asped »

Ну допустим я выведу в приложении 1 строку кода через

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

document.write('1 строка кода')
И все? :?

Можно на примере показать? :roll:

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

window.onload = (function() {    try {        // если VK.init выполнено, то значит приложение открыто вконтакте        VK.init(function() {            // выполняем код приложения            VK.loadParams(document.location.href);            var viewer_id = VK.params.viewer_id;            document.write('1 строка кода')        });    } catch (e) {        // VK.init не выполнено, приложение открыто не в контакте        alert('Откройте приложение вконтакте');    }           });
Аватара пользователя
Asped
WEB Team
WEB Team
Сообщения: 184
Зарегистрирован: 02 янв 2011, 20:34

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

Сообщение Asped »

А как через

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

document.write(' ')
вывести php/html страницу?
Хотя если я сделаю так. "Просмотр кода страницы" покажет какую страницу открываю через скрипт и смысл в нем пропадает.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

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

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

Asped
Ты свой код попробовал? Работает?
Через document.write(' ') php страницу не выведешь. document.write полностью меняет DOM страницы, свой html код можешь писать там.
Ответить