Código Fonte - O melhor conteúdo para programadores

ASP / Ambiente

Descobrir o país a partir do endereço IP


enviado por Gabriel Fróes
Desenvolvedores web em algum momento necessitam conhecer informações sobre os visitantes de suas páginas seja: tipo de browser utilizado, resolução da tela, IP, etc.

Com este código é possível descobrir o país de origem de um endereço IP.

Junto com este código acompanha um banco de dados em Access na qual possui as informações sobre o IP e o país.
<%
Option Explicit
'Declarando das Variáveis
Dim ip

'Requisitando os parâmetros
ip = Request.Form("ip")

Public Function getPaisFromIP(ByVal ip) 
   'Declarando das Variáveis
   Dim objCon
   Dim objRs
   Dim ipLongo
   Dim bdAccess
   Dim sql

   'Convertendo o IP para Longo
   ipLongo = convertIPToLongo(ip)
   
   'Abrindo Conexão com o Banco de Dados
   bdAccess   = Server.Mappath("ipPaises.mdb")
   Set objCon   = Server.CreateObject("ADODB.Connection")
   objCon.open "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & bdAccess & ";"
         
   'Query para descobrir o país do IP
   sql = "SELECT TBIP.*, TBPAISES.PAIS FROM TBIP INNER JOIN TBPAISES ON TBIP.SIGLA_PAIS = TBPAISES.SIGLA_PAIS  WHERE " & ipLongo & " BETWEEN IP_INICIO AND IP_FIM"

   'Executando a Query
   Set objRs = Server.CreateObject("ADODB.RecordSet")
   Set objRs = objCon.execute(sql)

   If Not objRs.EOF Then
      getPaisFromIP = objRs("PAIS") & " (" & objRs("SIGLA_PAIS") & ")"
   Else
      getPaisFromIP = "Não encontrado."
   End If

   'Destruição dos objetos
   objRs.close
   objCon.close
   set objRs   = Nothing
   Set objCon   = Nothing
End function 

Function convertIPToLongo (ByVal ip)
   Dim Cont
   Dim Pos
   Dim AntPos
   Dim Num
   
   If ip = "" Then
      convertIPToLongo = 0
   Else
      For Cont = 1 To 4
         Pos = InStr(AntPos + 1, ip, ".", 1)
         If Cont = 4 Then 
            Pos = Len(ip) + 1
         End If
         Num = Int(Mid(ip, AntPos + 1, Pos - AntPos - 1))
         AntPos = Pos
         convertIPToLongo = ((Num Mod 256) * (256 ^ (4 - Cont))) +   convertIPToLongo
      Next
   End If
End Function
%>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt-br">
<head><title>DEMO : Descobrir o País a partir do IP</title></head>
<style>body{font:normal 12px tahoma}</style>
<body>
<h1>DEMO : Descobrir o País a partir do IP</h1>
Digite o Endereço IP (xxx.xxx.xxx.xxx)<br />
<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="POST">
   <input type="text" size="20" name="ip" />
   <input type="submit" value="Enviar" />
<form>
<%If Len(ip) > 10 Then%>
   <h2>Resultado:</h2>
   Endereço IP: <b><%=ip%></b><br />
   País: <b><%=getPaisFromIP(ip)%></b>
<%Else%>
   <br />IP Inválido.
<%End If%>
</body>
</html>


Versão impressa gerada em: quarta-feira, 16 de maio de 2012

© Copyright 2006 - R&W Consulting.