Сегодня хочу поговорить об определении домена, из которого запущена игра. Это может пригодится в ряде случаев:
- делаем сайтлок
- блокировка рекламы на определенных доменах
- при сборе статистики
и т.д. Думаю этот список еще можно продолжить, но в голову больше ничего ни приходит.
В интернете, есть полно исходников функции, которая определяет домен. Но какие я только не находил, у них у всех есть какие-то недостатки.Поэтому пришлось написать свой код.
Она базируется на коде функции, которую я нашел, но доработал. Она проверяет запущена ли флешка локально, если нет, то из лоадера достается текущий домен и обрезается вся лишняя информация. 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/