php проверить ip по маске

Проверка айпи-адресов по маске

Помощь в написании контрольных, курсовых и дипломных работ здесь.

php проверить ip по маске. Смотреть фото php проверить ip по маске. Смотреть картинку php проверить ip по маске. Картинка про php проверить ip по маске. Фото php проверить ip по маскеКак осуществить перебор айпи адресов в скрипте?
Всем привет, это опять я. Опять у меня вопрос.Есть вот такой скрипт proba.php : 6

RegExp php проверить ip по маске. Смотреть фото php проверить ip по маске. Смотреть картинку php проверить ip по маске. Картинка про php проверить ip по маске. Фото php проверить ip по маске

Добавлено через 17 секунд

127\.0\.0\..+ php проверить ip по маске. Смотреть фото php проверить ip по маске. Смотреть картинку php проверить ip по маске. Картинка про php проверить ip по маске. Фото php проверить ip по маске
пхп не имеет отношение к регуляркам, ага, это прям отдельный яп

127\.0\.0\..+ php проверить ip по маске. Смотреть фото php проверить ip по маске. Смотреть картинку php проверить ip по маске. Картинка про php проверить ip по маске. Фото php проверить ip по маске
пхп не имеет отношение к регуляркам, ага, это прям отдельный яп

смысл лойсов? для багета? не, вон есть норм пример у Dolphin без регулярок

Добавлено через 11 минут
тут за лойсы бабки не платят

Помощь в написании контрольных, курсовых и дипломных работ здесь.

php проверить ip по маске. Смотреть фото php проверить ip по маске. Смотреть картинку php проверить ip по маске. Картинка про php проверить ip по маске. Фото php проверить ip по маскеКак вычислить диапазон ip адресов по адресу и маске сети?
Как в консоли вычислить диапазон ip адресов по адресу и маске сети? Число после символа ‘/’.

Нахождение айпи адреса узла подсети по айпи адресу сети
Условие айпи адрес сети 130.0.0.0 Найти айпи адрес 100 подсети 507 узла+маску подсети. 1).

Проверка по маске
Доброго времени суток уважаемые форумчане!Подскажите по ассемблеру AVR,как можно составить.

Источник

Matching an IP to a CIDR mask in PHP 5?

I’m looking for quick/simple method for matching a given IP4 dotted quad IP to a CIDR notation mask.

I have a bunch of IPs I need to see if they match a range of IPs.

What would cidr_match() look like?

It doesn’t really have to be simple, but fast would be good. Anything that uses only built-in/common functions is a bonus (as I’m likely to get one person to show me something in pear that does this, but I can’t depend on pear or that package being installed where my code is deployed).

php проверить ip по маске. Смотреть фото php проверить ip по маске. Смотреть картинку php проверить ip по маске. Картинка про php проверить ip по маске. Фото php проверить ip по маске

13 Answers 13

If only using IPv4:

something like this should work:

In a similar situation, I ended up using symfony/http-foundation.

When using this package, your code would look like:

It also handles IPv6.

I found many of these methods breaking after PHP 5.2. However the following solution works on versions 5.2 and above:

Example results

php проверить ip по маске. Смотреть фото php проверить ip по маске. Смотреть картинку php проверить ip по маске. Картинка про php проверить ip по маске. Фото php проверить ip по маске

Some function changed:

Here is one fast 64bits function to do it, please comment the return line you don’t need. Accepting any valid Ipv4 with or without valid CIDR Routing Prefix for example 63.161.156.0/24 or 63.161.156.0

To fast check if a given ipv4 is matching a given CIDR you can do it inline like in this example

To get the full range as an array for a given IP (with or without CIDR Routing Prefix) you can use the following code but be carefull because for example 25.25.25.25/16 return an array with 65536 elements and you can easily run out of memory using a smaller Routing Prefix

To fast check if a given ipv4 is matching a given array of IP (with or without CIDR Routing Prefix)

To run fast the function don’t check input but formally it should be a string matching the following regex

If you want to verify the input before using the function

Then the formal answer to your question is the following

You can compile your own function using these examples, hope these few lines have helped you…

Источник

Как в PHP узнать IP пользователя и определить его страну?

php проверить ip по маске. Смотреть фото php проверить ip по маске. Смотреть картинку php проверить ip по маске. Картинка про php проверить ip по маске. Фото php проверить ip по маске

php проверить ip по маске. Смотреть фото php проверить ip по маске. Смотреть картинку php проверить ip по маске. Картинка про php проверить ip по маске. Фото php проверить ip по маске

В этой статье рассмотрим, как в PHP можно узнать IP клиента и сервера, а также разберём как зная IP клиента определить его страну и город.

Как в PHP получить IP адрес посетителя сайта

Определение страны по ip с помощью Sypex Geo

Основные шаги по созданию php скрипта, с помощью которого можно будет определять страну по ip:

1. Скачаем Sypex Geo для PHP и базу данных стран. Sypex Geo распространяется по лицензии BSD, т.е. является абсолютно бесплатным.

2. Распакуем архивы и загрузим на сервер файлы «SxGeo.php» и «SxGeo.dat». В качестве примера, создадим на сервере папку SxGeo и загрузим эти файлы в неё.

3. Создадим свой скрипт, например, «get_country_code.php».

4. Вставим в этот файл следующий код:

5. Включим файл «get_country_code.php» в другие скрипты, в которых нужно реализовать выполнение кода в зависимости от принадлежности ip посетителя к той или иной стране.

Определение города по ip с помощью Sypex Geo

Для определения города, потребуется загрузить архив с базой данных городов для Sypex Geo, распаковать его и загрузить на сервер.

Скрипт в этом случае будет следующий:

Для автоматического обновления баз можно воспользоваться этим архивом. В этом архиве находится php скрипт. Этот скрипт необходимо настроить, т.е. указать в нём URL для скачивания базы и пути к файлам на сервере. После этого загрузить его на сервер и настроить его запуск по расписанию с помощью cron.

Определение страны и города по ip через сервис через сервис ipstack

Рассмотрим ещё один вариант определения в php местоположения по ip посетителя, но уже не через Sypex Geo, а с помощью сервиса ipstack.

Сервис ipstack имеет бесплатный план, который позволяет обрабатывать до 10000 запросов в месяц.

php проверить ip по маске. Смотреть фото php проверить ip по маске. Смотреть картинку php проверить ip по маске. Картинка про php проверить ip по маске. Фото php проверить ip по маске

Для получения бесплатного плана нажимаем на кнопку «GET FREE API KEY» и переходим на страницу, на которой нужно заполнить регистрационную карточку.

После регистрации, на личной странице ipstack вам будет назначен «API Access Key», который нужно скопировать. Он нам потребуется при создании php скрипта.

Как в PHP получить IP адрес сервера

Узнать IP адрес сервера в PHP можно с помощью следующей инструкции:

Пример реализации определения локации в CMS MODX

В качестве примере рассмотрим, как в CMS MODX Revolution можно очень просто без сторонних сервисов осуществить определение страны посетителя. Разработаем решение на базе Sypex Geo.

1. Для этого сначала нужно загрузить Sypex Geo в проект:

php проверить ip по маске. Смотреть фото php проверить ip по маске. Смотреть картинку php проверить ip по маске. Картинка про php проверить ip по маске. Фото php проверить ip по маске

Файл «SxGeo.php» – это основной скрипт, а «SxGeo.dat» – это база стран. Этих двух файлов достаточно для определения страны пользователя по его ip. Дополнительно в каталоге SxGeo ещё расположен файл «SxGeoCity.dat», данный файл в текущей реализации не нужен, он может потребовать, если в проекте потребуется определять не только страну пользователя, а ещё его регион и город.

2. Создадим сниппет, например «get_location.php». В качестве примера организуем это с помощью файлов. Для этого нужно чтобы был установлен pdoTools и в настройках включена опция «Использовать Fenom на страницах».

Код сниппета «get_location.php»:

Всё теперь чтобы написать логику достаточно использовать эту переменную.

Источник

Сопоставление IP-адреса с маской CIDR в PHP 5?

Я ищу быстрый / простой метод для сопоставления заданного ip4 dotted quad IP с маской нотации CIDR.

у меня есть куча IPs, мне нужно посмотреть, соответствуют ли они диапазону IPs.

что бы cidr_match() выглядеть?

на самом деле это не должно быть просто, но быстро было бы хорошо. Все, что использует только встроенные/общие функции, является бонусом (поскольку я, вероятно, получу одного человека, чтобы показать мне что-то в pear, что делает это, но я не могу зависеть от pear или этого пакета, установленного там, где развернут мой код).

12 ответов

Если только с помощью IPv4:

что-то вроде этого должно работать:

в аналогичной ситуации я использовал symfony / http-foundation.

при использовании этого пакета, ваш код будет выглядеть так:

Он также обрабатывает IPv6.

я обнаружил, что многие из этих методов ломаются после PHP 5.2. Однако следующее решение работает на версиях 5.2 и выше:

пример результатов

некоторые функции изменились:

моя техника использует бит к биту, используя подсеть и маску.

Мне нужен тест IP на подсети маски. Я нашел веб-сайт с отличным объяснением и исходным кодом, который отлично работает.

потому что веб-сайт может однажды перестать существовать, вот код

(Я не разрабатывал это; это разработано полом Греггом (http://pgregg.com/)

вот одна быстрая функция 64bits, чтобы сделать это, прокомментируйте обратную строку, которая вам не нужна. Принятие любого допустимого Ipv4 С или без допустимого префикса маршрутизации CIDR, например 63.161.156.0/24 или 63.161.156.0

для быстрой проверки, если данный ipv4 соответствует заданному CIDR вы можете сделать это инлайн, как в этом примере

до получите полный спектр как массив для данного IP (С или без префикса маршрутизации CIDR) вы можете использовать следующий код, но будьте осторожны, потому что, например, 25.25.25.25/16 возвращает массив с 65536 элементами, и вы можете легко запустить из памяти, используя меньший префикс маршрутизации

для быстрой проверки, если данный ipv4 соответствует заданному массиву IP (С или без префикса маршрутизации CIDR)

для быстрого запуска функция не проверяет ввод, но формально это должна быть строка, соответствующая следующему регулярному выражению

если вы хотите проверьте вход перед использованием функции

тогда формальный ответ на твой вопрос следующая

вы можете составить свою собственную функцию, используя эти примеры, надеюсь, что эти несколько строк помогли вам.

просто Примечание, ответ Альнитака работает 32/64 бит.

вот приготовленная версия, для быстрой защиты от спама на основе списков IP-адресов стран, которые вы можете получить везде. google for country IP list или country ip block (должны дать один здесь, действительно трудно найти его в навигации по страницам сайтов: страна ip блок генератор)

также можно использовать для фильтрации adsense в шаблонах страниц на основе страны.

Это только решение срочности в середине ночи. Иногда нужно быстро придумать что-то подобное для клиента вчера, так что вот оно.

вы также можете использовать библиотека груш Net_IPv4.

возможно, это кому-то полезно.

преобразование битовой маски в IP-маску:

преобразование IP-маски в битовую маску:

Источник

Сетевые функции

Содержание

User Contributed Notes 14 notes

A simple and very fast function to check against CIDR.

Your previous examples are too complicated and involves a lot of functions call.

An improved version of claudiu at cnixs dot com not using split and working with the following:
ip: 192.168.101.123, CIRD: 192.168.101.144/24

improved version of philippe-at-cyberabuse.org’s answer:

PHP miss CIDR functions.

This little function might come in handy

In Trevor Hemsley’s translation of the perl range2cidr function, the

condition should be

otherwise it won’t work for /32s, ie if you feed range2cidr(«1.2.3.4», «1.2.3.4»).

function cidr_conv($cidr_address) <
$first = substr($cidr_address, 0, strpos($cidr_address, «/»));
$netmask = substr(strstr($cidr_address, «/»), 1);

$first_bin = str_pad(decbin(ip2long($first)), 32, «0», STR_PAD_LEFT);
$netmask_bin = str_pad(str_repeat(«1», (integer)$netmask), 32, «0», STR_PAD_RIGHT);

Regarding samuele’s note:

You can get faster code if you apply directly what happens in network devices, such as routers. If you AND (logic operation) the remote ip against the local netmask the result will be the network ip if the remote ip is from the local network. Example:

192.168.0.16 = 11000000.10101000.00000000.00010000
& 255.255.255.0 = 11111111.11111111.11111111.00000000
—————————————————————
192.168.0.0 = 11000000.10101000.00000000.00000000

And now the code. My example uses a html form where you place the values you want to test:

When I was working on a project I ran into this problem with redirecting. My solution is as follows:
header(«Refresh: 5; url=../main/main.php?».session_id().»»);

This allowed me to pass the session_id() which is used throughout site to make sure user has loged in.
I hope this helps!

If you want to get the interface of an IP, based on the local route table, use this.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *