[php] wydajne whois

0

czy znacie jakis wydajny sposob dzieki któremu mogę sprawdzić po IP i host z jakiego kraju pochodzi odwiedzający?

  1. znam numer z fsockopen i serwerami dns ale one są przeładowane a takie sprawdzanie ma sie wykonywać w miarę sprawnie
  2. wiem tez ze czesto tylko sprawdze narodowosc providera ale powiedzmy ze przymykamy na to oko

z gory dzieki za pomoc

0
<?php
$errno = 0;
$errstr = '';

$ip = $_GET['ip'];

$s = fsockopen('whois.arin.net', 43, $errno, $errstr, 5);
if (!$s)
{
	die($errno . ': ' . $errstr);
}
fputs($s, "$ip\n");
$ret = '';
while(!feof($s))
{
	$ret .= fgets($s, 1024);
}
fclose($s);
if (preg_match('#^ReferralServer:(.+)$#m', $ret, $c))
{
	/* Musimy odpytać inny serwer :-) */
	preg_match('#whois://(.+?)(:43)?$#', $c[1], $c);
	$s = fsockopen($c[1], 43, $errno, $errstr, 5);
	if (!$s)
	{
		die($errno . ': ' . $errstr);
	}
	fputs($s, "$ip\n");
	$ret = '';
	while(!feof($s))
	{
		$ret .= fgets($s, 1024);
	}
	fclose($s);
	
}

if (preg_match('#country.+?([A-Z]+)#i', $ret, $c))
{
	print_r($c[1]);
}
?>
0

dzieki za odp ale tak jak pisalem fsockopen odpada bo jest malo wydajne

cos innego jeszcze wchodzi w gre?

0

Możesz tak przelecieć wszystkie możliwe zakresy i zrobić sobię lokalną bazę. Przy dobrym serwerze, gdzie łącze nie będzie zapchane nie odczujesz dużej różnicy dorzucając ten skrypt.

Poza tym, pisałeś że odpada numer z "fsockopen i serwerami dns" - tutaj wykorzystane są serwery whois.

Jeśli chcesz oprzeć język w jakim chcesz serwować stronę odwiedzającemu - sprzawdź nagłówek Accept-Language.

1 użytkowników online, w tym zalogowanych: 0, gości: 1