Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 IP -> Страна (II)   Nike Golubev   13 Feb 2003 23:34:32 
 Re: IP -> Страна (II)   Mihai Solohov   14 Feb 2003 01:38:24 
 IP -> Стpана (II)   Viktor Ostashev   15 Feb 2003 00:25:06 
 IP -> Стpана (II)   Viktor Ostashev   14 Feb 2003 02:02:20 
 IP -> Страна (II)   Serguei Trouchelle   14 Feb 2003 13:14:03 
 IP -> Страна (II)   Mihail Gusinski   16 Feb 2003 03:26:29 
 IP -> Стpана (II)   Viktor Ostashev   16 Feb 2003 17:52:57 
 IP -> Стpана (II)   Eugeny Kreewosheyew   17 Feb 2003 02:10:45 
 Re: IP -> Стpана (II)   Nikolay Pichtin   16 Feb 2003 21:33:10 
 IP -> Стpана (II)   Stanislav Poniatovski   16 Feb 2003 01:03:43 
 IP -> Страна (II)   Oleg N. Kotenko   18 Feb 2003 18:46:01 
 Re: IP -> Страна (II)   ‚« ¤Ё¬Ёp ѓpҐЎ­Ґў   19 Feb 2003 23:06:44 
 IP -> Страна (II)   Damien Nevsky   20 Feb 2003 14:17:54 
Архивное /ru.website/18943e4eb183.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional