|
|
ru.website- RU.WEBSITE ------------------------------------------------------------------- From : Mihail Gusinski 2:5058/48 16 Feb 2003 03:26:29 To : Nike Golubev Subject : IP -> Страна (II) -------------------------------------------------------------------------------- 13 февраля 2003 22:34 Nike Golubev в письме к All писал: NG> Hу, совсем меня запинали :) Сорри, что не отвечаю, каждому, но, думаю, NG> излишне плодить трафик, когда всем (кроме меня :) все ясно. Как я NG> понял, _правильно_ будет все-таки спросить пользователя, на каком NG> языке он предпочитает увидеть страничку. NG> Hо, если рассмотреть "сферического коня в вакууме" :) Как можно NG> определить _страну_ в которой сидит пользователь, пришедший на сайт? NG> Или это невозможно? #!/usr/bin/perl ############################################################################## # Country Determinator Version 1.0 # # Copyright 1998 Aleksey Xacker xacker@phreaker.net # # http://xacker.virtualave.net # # Created 19.III.1999 Last Modified 19.III.1999 # ############################################################################## # Set Variables $countries_path="countries.txt"; print "Content-Type: text/html\n\n"; $host = &gethostname; $host =~ tr/a-z/A-Z/; $hostlength = length($host); &smartdetect; # Get domain extension $tempstr = $host; for ($i = $hostlength; $i >= 0; $i--) { $ch = chop($tempstr); if ($ch eq '.') { $host = substr($host, $i, $hostlength - $i); $i = 0; } } # Get needed Country name from file open (FILE,$countries_path) || die Cant locate countries.txt file; @LINES = <FILE>; close(FILE); $SIZE = @LINES; for ($i = 0; $i <= $SIZE; $i++) { $countrystr = $LINES[$i]; $tempstr = $countrystr; $len = length($countrystr); for ($j = $len; $j >= 0; $j--) { $ch = chop($tempstr); if ($ch eq '`') { $country_ext = substr($countrystr, 0, $j - 1); if ($host eq $country_ext) { $host = substr($countrystr, $j, $len - $j - 1); print "$host"; exit; } $j = 0; } } } print "Unknown"; exit; ################################################ # Detecting Country by other parameters # For example, my RemoteHost - xxx.Kiev.dial.sovam.com, but country is Ukraine # - .KIEV. is Ukraine sub smartdetect { &seeksubstr('.KIEV.', 'Ukraine'); &seeksubstr('.YAKUTSK.', 'Russain Federation'); } ######################################################################## # Usage: seeksubstr(SubString, Country); # # Returns: nothing, but print country name and exit if substring found # ######################################################################## sub seeksubstr { $len = length($_[0]); if ($hostlength > $len) { for ($i = $hostlength - $len; $i >= 0; $i--) { $tempstr = substr($host, $i, $len); if ($tempstr eq $_[0]) { print "$_[1]"; exit; } } } } ############################### # # # GET HOST NAME FUNCTION # # # ############################### sub gethostname { $ipnum = $ENV{'REMOTE_ADDR'}; @digits = split (/\./, $ipnum); $address = pack ("C4", @digits); $host = gethostbyaddr ($address, 2); return $host } Hе совсем то, что ты спрашивал, но работает. ;) Это coutries.txt === Цитирую файл Windows Clipboard === AD`Andorra AE`United Arab Emirates AF`Afghanistan AG`Antigua and Barbuda AI`Anguilla AL`Albania AM`Armenia AN`Netherland Antilles AO`Angola AQ`Antarctica AR`Argentina AS`American Samoa AT`Austria AU`Australia ... ... ... === Конец цитаты === Пиши почаще. Mihail. mailto:miko@sigaret.net ... Много людей честных благодаря тому, что дураки. (c) Ф. Достоевский --- Крестьянин Фом Парра дожил до 152 лет, питаясь только растительной пищей * Origin: Если вырвет собаку в доме - умрет хозяин дома. (2:5058/48) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.website/18943e4eb183.html, оценка из 5, голосов 10
|