- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте.
Хочу сделать геотартегинг на сайте. Есть база вида IP(основная сеть)/маска подсети (192.168.137.1/24). Не умею считать :mad: . Если я, например, загружу эту базу в файл (только припустим, конечно, я предварительно все сортирую). Как мне, получив IP пользователя, скажем 192.168.137.22 определить, что он находится в сети 192.168.137.1, залезть в файл и счесть, скажем конфигурацию для этой сети. Надо ли перед этим расписать такое 192.168.137.1/24 на все возможные варианты, или по айпи можно определить основную сеть? Вообщем, помогите. Сломал голову. :o
Что ли формулу хотя бы для расклада ip/mask на ip array дайте, если по айпи нельзя основную сеть считать не имея маски.
P.S. Насколько будет оправдано хранить значения в SQLite? Или лучше все-таки что-то типа json/ini?
Я это делаю примерно так:
Допустим есть сеть
$net=192.168.1.1/22
И есть айпишник
$ip=192.168.2.34
Чтобы проверить принадлежность, делаем так
[umka], спасибо, работает. Но алгоритм не понял.
Что делает это? $mask=pow(2,32-$mask)-1; Т.е. какая формула в целом?
[umka], спасибо, работает. Но алгоритм не понял.
Что делает это? $mask=pow(2,32-$mask)-1; Т.е. какая формула в целом?
Эта "формула" делает из числа, обозначающего количество разрядов, непосредственно маску.
Т.е. у нас есть сеть
192.168.1.1/22, она же 192.168.0.1/22
Т.е. это все айпишники
192.168.0.1 — 192.168.3.255
В двоичном виде, это айпишники:
11000000101010000000000000000001 — 11000000101010000000001111111111
Нам нужно проверить, попадает ли в этот диапазон искомый ip-адрес 192.168.2.34
Это в двоичном виде 11000000101010000000001000100010.
Чтобы проверить принадлежность к сети, нужно проверить, совпадают ли разряды из адреса сети, попадающие под маску, с разрядами искомого ip-адреса, которые попадают под эту же маску.
Маска /22, в нашем случае, это 22 "фиксированных" разряда, т.е.
2^(32-22)-1
В двоичном виде маска:
11111111111111111111110000000000
Т.е. условие, которое производит проверку принадлежности айпишника к сети вот
if (!(($ip^$net)&~$mask)) ...
В нём используются три десятичных числа: айпишник, сеть (по-сути, любой адрес из этой сети) и маска.