PUBLICIDADE
Este código tem nota
10

Autor

gabriel

Gabriel Fróes

membro deste junho de 2006

PUBLICIDADE

Enquete

Qual é o melhor portal da internet brasileira?

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


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>

ArquivoTipoTamanhoHits 
ipPaises.zipArquivo ZIP402,6 Kb1946Baixar o Arquivo
Sim   Não   Este código foi útil para você?
NotaComentário
10
djteuzinho comentou em 16/6/2011

EXELENTE

Muito bom , com precisão
10
usertop comentou em 16/12/2010

Exelente

muito bom de garande utilidade
Regras:
Os comentários seguem as seguintes regras:
  • Todos os comentários são enviados por membros cadastrados no site.
  • A pontuação de comentários de conteúdo do próprio membro não serão computados.
  • Os comentários serão pré-aprovados, porém a equipe do site revisará o conteúdo de todos os comentários podendo ser invalidados (inclusive a pontuação).
  • Os comentários precisam ter, obrigatóriamente, coerência sobre o conteúdo que será comentado.
  • O membro que atingir 5 comentários invalidados não poderá mais comentar dentro do site. Com isso o membro não poderá mais ganhar pontos com comentários.
  • Há um limite de 10 comentários por dia para cada membro.
  • Qualquer comentário após ter sido publicado poderá ser retirado através da opção ( denunciar)

Comente

     (ainda não tem cadastro? clique aqui!)


Máximo de 30 caracteres

Máximo de 255 caracteres