Сегодня хочу поговорить об определении домена, из которого запущена игра. Это может пригодится в ряде случаев:
- делаем сайтлок
- блокировка рекламы на определенных доменах
- при сборе статистики
и т.д. Думаю этот список еще можно продолжить, но в голову больше ничего ни приходит.
В интернете, есть полно исходников функции, которая определяет домен. Но какие я только не находил, у них у всех есть какие-то недостатки.Поэтому пришлось написать свой код.
Она базируется на коде функции, которую я нашел, но доработал. Она проверяет запущена ли флешка локально, если нет, то из лоадера достается текущий домен и обрезается вся лишняя информация. www. часть тоже обрезается, т.к. она не нужна.
Теперь мы можем например, блокировать рекламу или отправить на сервер информацию с какого домена мы запущены. Но для сайтлока, нужно написать еще функцию, которая будет сравнивать текущий домен с разрешенным, причем субдомены тоже должны быть разрешенными.
В функцию передается текущий домен и список адресов(без www части) для которых функция должна возвращать true.
В комментариях приводятся примеры доменных имен, которые подходят под условие.
Есть еще 1 вариант проверить домен, через регулярные выражения, но до этого еще руки не дошли :)
- делаем сайтлок
- блокировка рекламы на определенных доменах
- при сборе статистики
и т.д. Думаю этот список еще можно продолжить, но в голову больше ничего ни приходит.
В интернете, есть полно исходников функции, которая определяет домен. Но какие я только не находил, у них у всех есть какие-то недостатки.Поэтому пришлось написать свой код.
private function GetDomain(): String
{
var local: LocalConnection = new LocalConnection()
if (local.domain == "localhost")
return "localhost";
var url: String = stage.loaderInfo.loaderURL;
var urlStart: int = url.indexOf("://") + 3;
var wwwPart: String = url.substr(urlStart, 4);
if (wwwPart == "www.")
urlStart += 4;
var urlEnd: Number = url.indexOf("/", urlStart);
var domain: String = url.substring(urlStart, urlEnd);
return domain;
}
Она базируется на коде функции, которую я нашел, но доработал. Она проверяет запущена ли флешка локально, если нет, то из лоадера достается текущий домен и обрезается вся лишняя информация. www. часть тоже обрезается, т.к. она не нужна.
Теперь мы можем например, блокировать рекламу или отправить на сервер информацию с какого домена мы запущены. Но для сайтлока, нужно написать еще функцию, которая будет сравнивать текущий домен с разрешенным, причем субдомены тоже должны быть разрешенными.
private function CheckDomain(currentDomain: String, urls: Array): Boolean
{
for (var i: int = 0; i < urls.length; i++)
{
var index: int = currentDomain.indexOf(urls[i]);
if (index != -1)
{
if (index == 0)
{
// main domain (domain.com)
return true;
}
else if (currentDomain.charAt(index - 1) == ".")
{
// subdomain (sub.domain.com)
return true;
}
else
{
// fake domain (fakedomain.com)
}
}
}
return false;
}
В функцию передается текущий домен и список адресов(без www части) для которых функция должна возвращать true.
В комментариях приводятся примеры доменных имен, которые подходят под условие.
Есть еще 1 вариант проверить домен, через регулярные выражения, но до этого еще руки не дошли :)
Поделитесь интересным с друзьями:
Блог: http://romanlovetext.blogspot.com/