Перейти до

Скрипт на РНР


Рекомендованные сообщения

У кого есть скрипт на РНР, который проверяет IP адрес из сушествующих в списке. Типа выводит есть в текстовом файле в наличии этот айпишник.

Или может кто решал такую задачу с базой данных, это вроде как проверить входит ли айпи в UA-IX или нет. Поделитесь у кого есть.

Ссылка на сообщение
Поделиться на других сайтах
У кого есть скрипт на РНР, который проверяет IP адрес из сушествующих в списке. Типа выводит есть в текстовом файле в наличии этот айпишник.

Или может кто решал такую задачу с базой данных, это вроде как проверить входит ли айпи в UA-IX или нет. Поделитесь у кого есть.

Perl-скрипт есть на сайте Колокола. В ПХП переделывается при желании за 5 минут.

Ссылка на сообщение
Поделиться на других сайтах
Там типа не совсем то, у людей есть покрасивей скрипты. Просто делиться не хотят. А как самим надо то просят.

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

Ссылка на сообщение
Поделиться на других сайтах
я что-то не совсем понял что требуется проверять и где берутся IP

Если юзер не может определить, приндлежит ли данный адрес какой-либо сети, список которых есть в интете, то надо ему дать скрипт, который бы делал это за него.

 

Пример есть адрес 192.168.253.252

Надо определить, принадлежит ли он сети

192.168.0.0/16

Т.е. сравнивать побайтно, входит ли адрес в диапазон.

 

В принципе, надо бы скрипт написать такой на перле или пхп.

Ссылка на сообщение
Поделиться на других сайтах
Там типа не совсем то, у людей есть покрасивей скрипты. Просто делиться не хотят. А как самим надо то просят.

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

Ну вот действительно не все жадные!

Ссылка на сообщение
Поделиться на других сайтах
я что-то не совсем понял что требуется проверять и где берутся IP

Беруться из списка в файле на провайдере и проверяються. Пользователь вводит в строке сервер а ему в ответ наличие данного адреса в списке, типа есть такой

Ссылка на сообщение
Поделиться на других сайтах

ну так это же вроде несложно

я только не совсем понял значение цифр 24,16...

тут наверное придется поизвращаться

но очень простое решение выглядит примерно так:

<?php
echo "<form method=post>
IP address <input type=text name=zapros> <input type=submit value=Ok>
</form>";

if (!empty($zapros)){
$file=file("http://www.colocall.net/ua/",r);
$fst_pre=array_search("<PRE>\n",$file);
$lst_pre=array_search("</PRE>\n",$file);
for ($i=$fst_pre-1;$i<$lst_pre;$i++)
{
$ss=strip_tags($file[$i]);
if (strlen($ss)>=7) 
 {
 	$ex=explode(".",$zapros);
 	$z="$ex[0].$ex[1].$ex[2]";
 	if (eregi($z,$ss)) {echo "Сеть подключена к точке обмена трафиком.  $ss<br>"; $o=1;}
 	$i++;
 }
}
if ($o<>1) echo "Звиняйте, але ця мережа не у UA-IX";
}
?>

сохраняется как file.php

Ссылка на сообщение
Поделиться на других сайтах

Вот в том то и дело, нужны не IP проверенные а сети в целом ( типа 212.40.46.0/24 ) Если создать файл с переработанными сетями в отдельные АЙПИ то РНР будет над ним думать по 30 сек. Что не есть ХАРАШО. А юзверь должен ввести не АЙПИ а имя, типа local.com.ua и получить ответ "Сеть подключена к точке обмена трафиком". А если так как написал Foster то я бы и сам давно сделал и радовался.

Ссылка на сообщение
Поделиться на других сайтах
ну так это же вроде несложно

я только не совсем понял значение цифр 24,16...

тут наверное придется поизвращаться

но очень простое решение выглядит примерно так:

<?php
echo "<form method=post>
IP address <input type=text name=zapros> <input type=submit value=Ok>
</form>";

if (!empty($zapros)){
$file=file("http://www.colocall.net/ua/",r);
$fst_pre=array_search("<PRE>\n",$file);
$lst_pre=array_search("</PRE>\n",$file);
for ($i=$fst_pre-1;$i<$lst_pre;$i++)
{
$ss=strip_tags($file[$i]);
if (strlen($ss)>=7) 
 {
 	$ex=explode(".",$zapros);
 	$z="$ex[0].$ex[1].$ex[2]";
 	if (eregi($z,$ss)) {echo "Сеть подключена к точке обмена трафиком.  $ss<br>"; $o=1;}
 	$i++;
 }
}
if ($o<>1) echo "Звиняйте, але ця мережа не у UA-IX";
}
?>

сохраняется как file.php

/24 - значит 256 адресов, т.е. последний байт.

/16 - * 256*256 - 2 последних байта

 

Алгоритм должен быть приблизительно такой:

Сравнивание побайтно перввых байтов сетей и адреса, потом взависимости от /24, /16 и т.д. проверять, входит ли остальная часть адреса в диапазон сети.

 

Пример:

сеть 123.234.0.0/16

Адреса 123.234.1-255.1-255 входят в диапазон сети.

 

Может в модуль для СТГ это включить? Список украинских сетей для подсчета UA-IX надо локально закачивать для генерации rules.

Ссылка на сообщение
Поделиться на других сайтах
Что-то не пойму, а чем колаколовский не устраивает??? http://www.colocall.net/ua/ Там ведь єто все отлично работает!

Там это все отлично работает. НО!

 

1. Относительно Колокола. Определяется конкретно UA-IX или нет. Да еще и с обновлением в 5-10 минут, что для домашней сети как правило плохо, потому как слишком точно. Реальна вполне ситуация, когда юзер получит от колокола ответ, что в данный момент адрес украинский, начнет качать, а биллинг сети ему трафик посчитает как мировой, потому что биллинг сети, если он не привязан прямо к BGP будет пользоваться "снимком" этого списка на конкретный момент времени (у меня например на 4 часа ночи). Кроме того есть ряд исключений, которые для Колокола не важны, а для сети/мелкого прова важны. Многие даже крупные провы трафик с адресами впн-провайдеров тарифицируют как мировой, а не как украинский. И обратная ситуация, трафик по реальным адресам внутри сети или провайдеров сети часто надо считать как внутрисетевой, а не Украинский.

2. Юзеры попадаются часто нешарящие. Причем абсолютно. На том же Колоколе введет 10.144.144.49, ему выдаст что это "не Украина", он заходить туда не будет по причине боязни что ему денег насчитает. А это адрес основного файл-сервера нашей сети, трафик с ним считается естественно внутрисетевым. Так что если в сети есть разделение трафика более сложное чем внутренняя сеть / внешняя сеть, то нужно иметь метод проверки адресов. Самый удобный - скрипт на сайте сети или сайте статистики.

Ссылка на сообщение
Поделиться на других сайтах
Вот в том то и дело, нужны не IP проверенные а сети в целом ( типа 212.40.46.0/24 ) Если создать файл с переработанными сетями в отдельные АЙПИ то РНР будет над ним думать по 30 сек. Что не есть ХАРАШО. А юзверь должен ввести не АЙПИ а имя, типа local.com.ua и получить ответ "Сеть подключена к точке обмена трафиком". А если так как написал Foster то я бы и сам давно сделал и радовался.

ну так сделай, или сформулируй нормально :(

я для примера взял с сайта колоколла, чтоб не париться

а так можно в файл это все скачать и курочить как угодно

 

если тебе нужно чтоб имя вводил добавь еще одну строчку:

вместо:

if (!empty($zapros)){
$file=file("http://www.colocall.net/ua/",r);
$fst_pre=array_search("<PRE>\n",$file);

такое:

if (!empty($zapros)){
$zapros=gethostbyname($zapros);
$file=file("http://www.colocall.net/ua/",r);
$fst_pre=array_search("<PRE>\n",$file);

 

 

/24 - значит 256 адресов, т.е. последний байт.

/16 - * 256*256 - 2 последних байта

 

Алгоритм должен быть приблизительно такой:

Сравнивание побайтно перввых байтов сетей и адреса, потом взависимости от /24, /16 и т.д. проверять, входит ли остальная часть адреса в диапазон сети.

а как насчет остальных цифирек? ну там например 12,19,21...

Ссылка на сообщение
Поделиться на других сайтах
а как насчет остальных цифирек? ну там например 12,19,21...

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

Тут нужно материал почитать на эту тему, чтоб понимать, что к чему.

Ссылка на сообщение
Поделиться на других сайтах
а как насчет остальных цифирек? ну там например 12,19,21...

http://www.cotse.com/networkcalculator.html

http://www.a-plus.net/Useful_Netmask.htm

Думаю разобраться не сложно...

Ссылка на сообщение
Поделиться на других сайтах
Теперь займусь как раз скриптом для сайта, который будет пользователям все это дело проверять, какие адреса куда относятся. Как сделаю, обещаю выложить здесь для жаждущих.

В общем пока я раскачивался писать скрипт, у меня тут местный талант нашелся и все сделал :(. Так что качайте и пользуйтесь...

Ссылка на сообщение
Поделиться на других сайтах

что-то у меня вот такая трабла:

 

Server error!
The server encountered an internal error and was unable to complete your request. 
Error message: 
Premature end of script headers: ipzones.cgi 
If you think this is a server error, please contact the webmaster 

Ссылка на сообщение
Поделиться на других сайтах
что-то у меня вот такая трабла:

 

Server error!
The server encountered an internal error and was unable to complete your request. 
Error message: 
Premature end of script headers: ipzones.cgi 
If you think this is a server error, please contact the webmaster 

Народ! Во-первых, данный продукт не мой. Там есть координаты автора. Во-вторых, я надеялся что данный скрипт НУЖЕН людям, которые в состоянии самостоятельно разобраться почему выдается данная СТАНДАРТНАЯ для юниксов ошибка. В третьих, у меня скрипт прекрасно уже полдня работает, так что он однозначно работоспособен. То, что его инсталляция не рассчитана "на дурака", ну так и скрипт специфический... Сам автор спокойно программит под виндой, проверяет там же. При переносе на юникс делается вполне стандартный набор операций.

Ссылка на сообщение
Поделиться на других сайтах
Вот только всеже хотелось на чистом РНР, не CGI.

"- И кофе в постель, пожалуйста!" :(

 

С такими "пожеланиями" я бы советовал взять в руки червонец, найти ближайшего веб-мастера, и он переделает за 10-15 минут имеющееся, в то, что хочется.

Ссылка на сообщение
Поделиться на других сайтах
Народ! Во-первых, данный продукт не мой. Там есть координаты автора. Во-вторых, я надеялся что данный скрипт НУЖЕН людям, которые в состоянии самостоятельно разобраться почему выдается данная СТАНДАРТНАЯ для юниксов ошибка. В третьих, у меня скрипт прекрасно уже полдня работает, так что он однозначно работоспособен. То, что его инсталляция не рассчитана "на дурака", ну так и скрипт специфический... Сам автор спокойно программит под виндой, проверяет там же. При переносе на юникс делается вполне стандартный набор операций.

Простите. И обращался я не конкретно к Вам.

 

А зачем тогда нужен форум? Зачем тогда общение?

Если вы продвинуты во многом, не стоит обижать других. Не хотите помочь - не отвечайте. Попросту промолчите.

 

Возможно Вы таким родились? Или когда вы чему-то учились Вы не просили помощи? Тогда вопрос - что Вы делаете тут?

 

П.С. Не нада посылать на Яндекс, Гугл и т.п.

Ссылка на сообщение
Поделиться на других сайтах
а как насчет остальных цифирек? ну там например 12,19,21...

Маска по новым правилам пишется побитовая, т.е. адрес можно представить не в байтном виде а в битном, 0/1

Т.е. 10.0.0.0/8 это

0000 1010 0000 0000 0000 0000 0000 0000

Это 8 бит ^ Это диапазон сети, т.е то что изменяется.

Если 12, то отсчитываем первых 12 бит

0000 0001 0000 0000 0000 0000 0000 0000

Это 12 бит ------^

Если 32 это 0 бит, т.е. один адрес

Ссылка на сообщение
Поделиться на других сайтах
П.С. Не нада посылать на Яндекс, Гугл и т.п.

Если в сети есть необходимый тебе материал, то яндекс с гуглем тебе его сразу выдадут. Т.е. кто-то уже потратил свое время на то, чтобы решить твою проблему. Так зачем просить кого то тратить свое время ЕЩЁ РАЗ, когда для тебя уже все есть прямо сейчас?

Ссылка на сообщение
Поделиться на других сайтах

Да, пожалуй готовый продакт к использованию да еще и шаровой в инете найти трудно, да и все-равно надо приложить хотя бы минимальные усилия для того, чтобы он заработал.

А если не охота, то искать того, кто это сделает за тебя. Не важно на каких условиях...Но на шару много раз никто делать не будет.

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

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...