IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   IP адреса... ето родина моя... всех люблю на свете я... :) (http://www.imho.ws/showthread.php?t=17735)

lanix 12.12.2002 17:57

IP адреса... ето родина моя... всех люблю на свете я... :)
 
как в РНР определить к Какой стране принадлежит комп с которого зашли на страницу ? точнее как проверять IP адреса?

Stasik 12.12.2002 18:08

http://www.stasik.com/geo/

(C) ноухау типа моё

lanix 12.12.2002 21:57

нет .. чтобы mirrors делать....

RaZEr 13.12.2002 01:11

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

AA666 13.12.2002 03:18

Stasik крута, и parser прикольный, оценил :) geo через whois/ripn и gd?

Stasik 13.12.2002 07:12

ну gd... да.... :) а остальное.. ноу хаy :)

lanix 13.12.2002 08:03

файлы хранить....
+ редирект на два хоста.. один для забугорья а второй для России и Балтики..

AA666 13.12.2002 09:02

lanixov пол-прибалтики в ru через забугор ходит, на данный момент со стороны uk, список российских ip где-то валяется, а как ip на сервере определить в соседней теме.
А вообще стандартая приблуда есть Geo::Mirror (Find closest Mirror) http://search.cpan.org/author/TJMATHER/Geo-IP-1.11/

Stasik там же кстати и Geo::IP (Look up country by IP Address), а в чём ноу хау говоришь? :contract:

Stasik 13.12.2002 18:03

а город? :xex:

lanix 13.12.2002 18:54

AА666 спасибо...
найти базу IP стран поделить на интервалы...
и проверять цифру перед первой точкой : ето глупо ??

AA666 13.12.2002 20:40

Stasik и город там есть и даже координаты: country_code,country_name,city,region,latitude,longitude.

lanixov зачем ip всех стран, просто переводишь в int и гонишь в базу ru ip по сетям и когда кто-нт заходит делаешь:
SELECT FROM iptable WHERE $client_ip>low_ip AND $client_ip<high_ip
if(@mysql_num_rows()>0) echo "Привет"; else echo "Hello";

lanix 13.12.2002 22:12

блин... там Перл ( в котором я полный 0 ) ... а в РНР нельзя ?

AA666 13.12.2002 23:26

Ленивы вы батенька, там в ридми ссылка есть на www.maxmind.com на котором это лежит в php /download/geoip/api/php и база по странам /download/geoip/database

RaZEr 14.12.2002 00:14

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

Stasik 14.12.2002 01:35

AA666
ну я его и юзаю :xex: только вот с картой ещё

lanix 14.12.2002 02:17

глупый вопросик... : у кого есть причесаный .dat файл и что там за содержимое ?

AA666 14.12.2002 23:42

RaZEr можно с javascripta выкачать несколько или один пробных файлов с мирроров и смотреть с кого быстрее.

lanixov http://www.maxmind.com/download/geoi...e/GeoIP.dat.gz

lanix 15.12.2002 02:52

нее ... мне не ссылка на .dat нужна.. а просто причесанный... ( а то в скачанном сполшной текст... ничего не понятно )..

+ и еще проблемка : пользователям и мне с ЛАН пишет что США , хотя я в Литве ( и адреса типа 192.168.240.1 которые внатуре Америкосские :)

Stasik 15.12.2002 09:27

фильтруй...

AA666 16.12.2002 20:43

причёсанный... так у тебя и есть "причёсанный" и готовый к употреблению, а если ты про сырцы, то они на том же сайте валялись

RaZEr 16.12.2002 21:45

Про JS: А как точно определить задержку прохождения запроса ? У меня конечно крутятся идеи с таймером и image.src, но по-моему это сильно натянуто будет если так .

Gike 16.12.2002 22:44

скажите пожалуйта, а чем читать этот .dat ?

AA666 16.12.2002 23:55

Cделать 2 img с src с разных серверов, поменять src и ловить onload="imageLoaded()", с тайм-аутом пару секунд. Только надо сначала пустышку загрузить со второго сервера, чтобы tcp соединение установить. Всмысле натянуто?

AA666 17.12.2002 00:00

да ничем его читать не надо, там все IP мира по всем странам мира в двоичном виде
PHP код:

if(!empty($HTTP_X_FORWARDED_FOR)) $ip $HTTP_X_FORWARDED_FOR;
else 
$ip $REMOTE_ADDR;
include(
"geoip.inc");
$gi geoip_open("GeoIP.dat",GEOIP_STANDARD);
echo 
geoip_country_code_by_addr($gi$ip) . "<br>" .
     
geoip_country_name_by_addr($gi$ip) . "\n";
geoip_close($gi); 


AA666 17.12.2002 00:06

простейший вариант с JS:

html:
<SCRIPT language=Javascript src="mirror.js"></SCRIPT>
<img src="http://mirror1/picture_10kb.jpg" onload="imgloaded(1)" border=0>
<img src="http://mirror2/picture_10kb.jpg" onload="imgloaded(2)" border=0>

mirror.js:
PHP код:

window.onerror "return true";

var 
endTime1=0;
var 
endTime2=0;
var 
diffTime;

function 
imgloaded(n) {
    if(
== 1endTime1=new Date();
    else 
endTime2=new Date();
    if(
endTime1 && endTime2 0) {
        
diffTime Math.ceil((endTime1.getTime() - endTime2.getTime())/1000);
        if(
diffTime 0self.location.replace('http://mirror2');
        else 
self.location.replace('http://mirror1');
    }



RaZEr 19.12.2002 22:53

А почему проще не сделать:

<img src="http://mirror1/picture_10kb_567856.jpg" onload="imgloaded('http://www.xz1.com')" border=0>
<img src="http://mirror2/picture_10kb_345345.jpg" onload="imgloaded('http://www.xz2.com')" border=0>

var mirrored = 0;

function imgloaded(loc) {
if (!mirrored) { document.location.href = loc; mirrored = 1; }
}

AA666 20.12.2002 02:19

Можно и так, я планировал до начала сравнения законнектиться со вторым сервером или фору по времени сделать. При http1.1 c keep-alive с текущего сервера картинка быстрее придёт, до второго ещё достучаться надо и tcp установить. С js конечно круче, но автору это имхо уже не интересно :)

RaZEr 21.12.2002 00:08

Ну с keep-alive ты зря . Пинг он и в африке пинг . Если от серва до юзера пакеты прыгают 800ms, то за 200 они не прийдут из-за того, что коннект установлен .

PS: Автору уже очень давно ничего не интересно ...


Часовой пояс GMT +4, время: 19:10.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.