Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Русский IP или нет
 
 автор: JIEXA   (16.10.2005 в 10:28)   письмо автору
 
 

Надо проверить IP пользователя является ли русским или нет.
Алгоритм:
Преобразовываем IP(этот шаг у меня вызывает зотруднения, так как я незнаю как устроены и что они делают все эти маски подсети и т.д.)
Потом просто грузим страницу http://noc.masterhost.ru/allrunet/runet
Ищим есть ли данный IP в списке, если есть, то значит IP русский, а если нету значит IP забугровый :))

   
 
 автор: cheops   (16.10.2005 в 14:15)   письмо автору
 
   для: JIEXA   (16.10.2005 в 10:28)
 

Так а куда нужно преобразовать IP?

   
 
 автор: JIEXA   (16.10.2005 в 14:27)   письмо автору
 
   для: cheops   (16.10.2005 в 14:15)
 

Всмысле куда? Просто вот в этом списке все IP кончаются на .0/тут ещё число какое-то.
К примеру мой IP 195.131.106.235 а в том списке он пренадлежит к 195.131.0.0/16.
Я незнаю как точнее объяснить, но думую вы поняли :))))

   
 
 автор: cheops   (16.10.2005 в 15:42)   письмо автору
 
   для: JIEXA   (16.10.2005 в 14:27)
 

А вас затрудняет CIDR-нотация диапазонов IP-адресов... сейчас постараюсь объяснить...
Вот есть диапазон 195.131.0.0/16, 195.131.0.0 в нём - это начальный адрес, 16 - это краткая запись маски подсети, означающая, что в маске будет закрыто 16 бит. Адрес 195.131.0.0 в двоичной форме можно представить как
11000011 10000011 00000000 00000000

16 bit это соотвествует маске
11111111 11111111 00000000 00000000

или по русски :))) 255.255.0.0 т.е. диапазон от 195.131.0.0 до 195.131.255.255

   
 
 автор: weldpua2008   (16.10.2005 в 16:24)   письмо автору
 
   для: cheops   (16.10.2005 в 15:42)
 

Хм а как определить - Украину или другое СНГ?

   
 
 автор: Евгений Петров   (16.10.2005 в 17:28)   письмо автору
 
   для: weldpua2008   (16.10.2005 в 16:24)
 

Я пользуюсь Базой IP адресов и мне нравится.

   
 
 автор: DDK   (16.10.2005 в 17:32)   письмо автору
 
   для: Евгений Петров   (16.10.2005 в 17:28)
 

Не изволите ли поделиться ? :)

   
 
 автор: Евгений Петров   (16.10.2005 в 18:50)   письмо автору
 
   для: DDK   (16.10.2005 в 17:32)
 

http://softtime.ru/forum/read.php?id_forum=1&id_theme=5411&page=1

   
 
 автор: JIEXA   (16.10.2005 в 17:45)   письмо автору
 
   для: Евгений Петров   (16.10.2005 в 17:28)
 

большой минус баз --- их надо постоянно обновлять

   
 
 автор: JIEXA   (16.10.2005 в 16:47)   письмо автору
 
   для: cheops   (16.10.2005 в 15:42)
 

спасибо )) вроде дашло )

так мне просто надо в моём IP вытащить всё до второй точки, а потом из этого списка у каждого IP тоже вытаскивать всё до второй точки а потом сравнивать?

   
 
 автор: weldpua2008   (16.10.2005 в 18:14)   письмо автору
 
   для: JIEXA   (16.10.2005 в 16:47)
 

А что можете сказать насчет GeoIP?

Там есть база IP и скрипт на php

   
 
 автор: JIEXA   (16.10.2005 в 18:30)   письмо автору
 
   для: weldpua2008   (16.10.2005 в 18:14)
 

а что GeoIP? нафиг он нужен... я вот сейчас от cheopsa дождусь ответа и мне больше ничего не надо

   
 
 автор: cheops   (16.10.2005 в 19:44)   письмо автору
 
   для: JIEXA   (16.10.2005 в 16:47)
 

А вы можете каждую цифру адреса вытащить при помощи explode()
<?php
  
list($ip1$ip2$ip3$ip4) = explode(".""195.131.106.235");
?>

тогда в $ip1 будет 195, в $ip2 - 131, в $ip3 - 106, а в $ip4 - 235

   
 
 автор: JIEXA   (16.10.2005 в 20:25)   письмо автору
 
   для: cheops   (16.10.2005 в 19:44)
 

Держите скрипт друзья

<?php
# Разбиваем IP адрес и заносим каждый кусочек в массив
$ip explode("."$_SERVER['REMOTE_ADDR']);


# Загружаем страницу с русскими IP адресами 
$rusiplist file_get_contents("http://noc.masterhost.ru/allrunet/runet");

# Разбиваем список IP и заносим каждый IP в массив
$data explode("\n"$rusiplist);

foreach(
$data as $rusip)
{
    
$rip explode("."$rusip);
        if(
$ip['0'] == $rip['0'] and $ip['1'] == $rip['1'])
        {
        
$rus true;
                break;
    }
        else
    {
        continue;
    }
}
if(
$rus)
{
    print 
"Ваш IP(".$_SERVER['REMOTE_ADDR'].") <font color=red><b>является</b></font> русским";
}
else
{
    print 
"Ваш IP(".$_SERVER['REMOTE_ADDR'].") <font color=red><b>не является</b></font> русским";

?>


Пример работы здесь. Если найдете глюки, то пишите.

   
 
 автор: Евгений Петров   (16.10.2005 в 20:36)   письмо автору
 
   для: JIEXA   (16.10.2005 в 20:25)
 

Ваш IP(80.84.178.195) является русским
Я живу в Украине

   
 
 автор: JIEXA   (16.10.2005 в 20:39)   письмо автору
 
   для: Евгений Петров   (16.10.2005 в 20:36)
 

Да знаю, сейчас переделаю, я нашёл нимного другой способ

   
 
 автор: JIEXA   (16.10.2005 в 21:14)   письмо автору
 
   для: Евгений Петров   (16.10.2005 в 20:36)
 

а можете сейчас попробывать?

   
 
 автор: weldpua2008   (16.10.2005 в 21:18)   письмо автору
 
   для: JIEXA   (16.10.2005 в 21:14)
 

И все же как определить - Украинский Русский - пользователь?

Или вообще СНГ или Забугорный

   
 
 автор: Евгений Петров   (17.10.2005 в 00:41)   письмо автору
 
   для: JIEXA   (16.10.2005 в 21:14)
 

Ваш IP(80.84.178.162) не является русским
Уже лучше. Хотя зачем делить народ на русский и не русский. Не проще все таки сверяться с БД. А на счет обновления, то раз в месяц можно и обновить.

   
 
 автор: JIEXA   (17.10.2005 в 01:07)   письмо автору
 
   для: Евгений Петров   (17.10.2005 в 00:41)
 

Этот скрипт поможет сайтам, которые делают у себя каталоги файлов, так как у большенства хостинг-провайдеров лимит 1/4 (зарубежный/российский) трафик

   
 
 автор: Евгений Петров   (17.10.2005 в 01:11)   письмо автору
 
   для: JIEXA   (17.10.2005 в 01:07)
 

А если вывести страну Russian Federation - это разве не поможет?

   
 
 автор: JIEXA   (16.10.2005 в 21:32)   письмо автору
 
   для: JIEXA   (16.10.2005 в 20:25)
 

Вот переделал всё, цените:

<?php

# Загружаем страницу с русскими IP адресами 
$result file_get_contents("http://noc.masterhost.ru/cgi-bin/rus-lookup.pl?IP=".$_SERVER['REMOTE_ADDR']);

print 
strpos($result,"<font color=green>принадлежит");

if(
strpos($result,"<font color=green>"))
{
    print 
"Ваш IP(".$_SERVER['REMOTE_ADDR'].") <font color=red><b>является</b></font> русским";
}
else
{
    print 
"Ваш IP(".$_SERVER['REMOTE_ADDR'].") <font color=red><b>не является</b></font> русским";

?> 

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования