Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jrcardozo

localizar ip do usuário

Recommended Posts

seguinte...to querendo colocar um esquema num site que funcione assim, o usuário entra e o sistema identifica o "provavel" ip e destaca no mapa a região em que ele se localiza.....até ai "barbada", tem um monte de script na net que separa a faixa de ip por continente, mas eu queria por cidade, já procurei em vários lugares, consegui um arquivo txt com 150MB de dados de cidades do mundo mas não estou conseguindo relacionar ela como o ip pois só tem latitude e longitude de cada cidade neste arquivo. Alguem saberia como fazer ou que tenha um arquivo com as cidades do Brasil? Sei que devemos calcular o nº do ip para transforma-lo numa faixa com numero inteiro, mas e depois!!?? na tabela não tem nada de faixa ip! valeu, espero que possam dar uma luz

Compartilhar este post


Link para o post
Compartilhar em outros sites

caraca irmão..Nunca vi nada semelhante!Uma vez eu vi uma ferramenta Geo TOOL .. numa pesquisa no google ..Mas mesmo assim .. ela nao funcionou 100% .. pois eu botei meu IP lá .. e nao mostrou minha cidade .. rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

para ajudar no que pretendo abaixo os links...

 

http://www.ipgeo.com.br/

 

http://www.ip2location.com/

 

 

 

realmente dark, o resultado não é 100%, mas normalmente é acima de 97% de acerto, o proposito é apenas colocar algo visual pro usuário, pra deixar o site mais clean. o site ipgeo é o que mais certo deu com os testes, pena que não é free o banco e dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

dark, eu não manjo desse esquema de pegar o resultado da página, se você se interessar tenta fazer um exemplo com algum desses sites e coloca ai. Eu até pensei nessa sua ideia ontem, mas como não entendo dessa parte nem fui atras. mkboy, manual? você se refere a por exemplo um arquivo que tenha as faixas de ip por região? se é isso, existe a reviria na net mas só por continente, eu quero por cidade ai o "buraco" é mais embaixo pq ele faz um relacionamento com faixa de cep também hehehe ontem tentei importar para dbaccess o tal arquivo txt que achei na net que tem 150mb...ficou meia hora e não importou tudo e qd fui ver ainda deu erro na importação, além de não ter os campos necessarios para identificar o país. A ideia do dark é a mais sensata pois não precisaria usar db no meu server e manteria atualizado os dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois eh jonathannao eh dificil de montarA questão .. é ver se não tem nenhum limite no site dos carasEu tentei fazer um codigo de busca de dominios .. e me deparei com limite de buscas por IP.Então .. teria que testar se não vamos ser barrados por issoQuando der uma folga aqui, eu vejo se monto um exemplo pra você ver mais ou menos como funciona.Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

se não me engano nesses que passei não tem limite, mas outros sei que tem....garanto que essa ideia ai vai ser util pra galera dar uma "perfumada" no seu web site ficamos no aguardo de um exemplo seu...valeu dark

Compartilhar este post


Link para o post
Compartilhar em outros sites

caro lucasBR, sua indicação foi boa pra tentar ver a logica do XMLHTTP mas os exemplos deste post apenas pegam o pais e preciso da cidade, vou tentar algo mas não garanto...se alguem puder dar uma força pro dark nessa ai seria interessante, afinal dois pensam mais q um

Compartilhar este post


Link para o post
Compartilhar em outros sites

rs..eu comecei a fazer aqui .. mas nao terminei.. fiz o inicio do xmlhttptaí pra começar:

<% Set Obj = CreateObject("Msxml2.XMLHTTP") ip = "200.203.13.32" strURL = "http://www.ipgeo.com.br/Rel01.asp?ip="& ip Obj.open "GET",strURL,False Obj.send strHtml = Obj.responseText response.write strHtml%>

O Codigo acima q eu fiz .. simplesmente se conecta na pagina definida em strURL e traz todo o fonte pra tela.Faltaria .. filtrar .. e mostrar tudo o q tiver após:"Possíveis locais para o IP:"Com disse .. nao tive tempo ..Se alguem quiser continuar.. o começo tá aeAbraço..

Compartilhar este post


Link para o post
Compartilhar em outros sites

no amadorismo saiu isso....veja se está correto dark

 

<%Function BinaryToString(strBinary)	Dim intCount, xBinaryToString		xBinaryToString = ""			For intCount = 1 to LenB(strBinary)				xBinaryToString = xBinaryToString & chr(AscB(MidB(strBinary,intCount,1)))			Next		BinaryToString = xBinaryToStringEnd Function  Set Obj = CreateObject("Msxml2.XMLHTTP") ip = Request.ServerVariables("REMOTE_ADDR")  '"200.33.156.233" On Error resume Next strURL = "[url="http://www.ipgeo.com.br/Rel01.asp?ip"]http://www.ipgeo.com.br/Rel01.asp?ip[/url]="& ip  Obj.open "GET",strURL,False Obj.send strURL = BinaryToString(Obj.ResponseBody)  AchaInicio = Instr(1,strURL,".")  AchaInicio2 = Cint(Instr(AchaInicio,strURL,"<td>"))+0 AchaFim = Instr(AchaInicio2,strURL,"</td>") Diferenca = Cint(AchaFim - AchaInicio2) cidade = Mid(strURL,AchaInicio2,Diferenca) estado = Mid(strURL,AchaInicio2+50,Diferenca+2) pais="BR"   If Err <> 0 Then'se ip não for no Brasil procura internacional On Error resume Next  strURL = "[url="http://www.programacionweb.net/utilidades/paisip.php?url"]http://www.programacionweb.net/utilidades/paisip.php?url[/url]=" & ip	  obj.open "GET",strURL,False   obj.send	   strURL = BinaryToString(Obj.ResponseBody)	  AchaInicio = Instr(1,strURL,"banderas/")   AchaInicio2 = Cint(Instr(AchaInicio,strURL," /> "))+3  AchaFim = Instr(AchaInicio2,strURL,"</td>")  Diferenca = Cint(AchaFim - AchaInicio2)		   Response.Write Mid(strURL,AchaInicio2,Diferenca) If Err <> 0 Then 'se ocorrer erro no ip internacional exibe erro  Response.Write("erro") end if Else'se ip for no Brasil mostra os dados Response.Write(cidade&"<br>") Response.Write(estado&"<br>") Response.Write(pais) End If%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha cara.. só copiei seu codigo.. colei aqui .. e parece que funcionou beleza

 

<%Function BinaryToString(strBinary)	Dim intCount, xBinaryToString		xBinaryToString = ""			For intCount = 1 to LenB(strBinary)				xBinaryToString = xBinaryToString & chr(AscB(MidB(strBinary,intCount,1)))			Next		BinaryToString = xBinaryToStringEnd Function  Set Obj = CreateObject("Msxml2.XMLHTTP")'ip = Request.ServerVariables("REMOTE_ADDR")  '"200.33.156.233"ip = "200.176.2.10"On Error resume NextstrURL = "http://www.ipgeo.com.br/Rel01.asp?ip="& ipObj.open "GET",strURL,FalseObj.sendstrURL = BinaryToString(Obj.ResponseBody)AchaInicio = Instr(1,strURL,".")AchaInicio2 = Cint(Instr(AchaInicio,strURL,"<td>"))+0AchaFim = Instr(AchaInicio2,strURL,"</td>")Diferenca = Cint(AchaFim - AchaInicio2)cidade = Mid(strURL,AchaInicio2,Diferenca)estado = Mid(strURL,AchaInicio2+50,Diferenca+2)pais="BR"  If Err <> 0 Then'se ip não for no Brasil procura internacionalOn Error resume Next  strURL = "http://www.programacionweb.net/utilidades/paisip.php?url=" & ip	  obj.open "GET",strURL,False  obj.send	  strURL = BinaryToString(Obj.ResponseBody)	  AchaInicio = Instr(1,strURL,"banderas/")  AchaInicio2 = Cint(Instr(AchaInicio,strURL," /> "))+3  AchaFim = Instr(AchaInicio2,strURL,"</td>")  Diferenca = Cint(AchaFim - AchaInicio2)		  Response.Write Mid(strURL,AchaInicio2,Diferenca)If Err <> 0 Then'se ocorrer erro no ip internacional exibe erro  Response.Write("erro")end ifElse'se ip for no Brasil mostra os dadosResponse.Write(cidade&"<br>")Response.Write(estado&"<br>")Response.Write(pais)End If%>

Mas, me diz uma coisa.. o que é aquele "se nao for do brasil"

De onde tu tirou aquele endereço? hehehe

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

realmente funciona, só não sei nada de XMLHTTP, então creio que devo ter colocado algum parametro errado. Bom, eu apenas fiz o famoso ctrl+c e ctrl+V do código que o Lucas indicou no link. Acontece que para pegar a cidade aparentemente o serviço no Brasil é gratuito(e não pesquisa IP internacional), no exterior é pago....então fiz o seguinte....primeiro pesquisa no site brasileiro, se ocorrer erro no site(exibe uma mensagem parecida com essa no site "ip provavelmente fora do brasil") então ele vai em busca do ip no servidor internacional, ai ele retorna apenas o país.....agora vou tentar colocar essas bandeirinhas do país hehehe bom, resumindo...tem dois códigos em um apenas para que se o ip for brasileiro ele procura a cidade e estado, se não for exie o país....faça o teste colocando diferentes ips pra você ver

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois é, o lucas não "resolveu" mas deu o caminho das pedras hehehe valeu pela dica lucas e dark...valeu pela tentativa quem quiser melhorar essa gambiarra sinta-se a vontade hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma olhada .. refinando .. deixando soh o q interessa ..

<%Function BinaryToString(strBinary) Dim intCount, xBinaryToString xBinaryToString = "" For intCount = 1 to LenB(strBinary) xBinaryToString = xBinaryToString & chr(AscB(MidB(strBinary,intCount,1))) Next BinaryToString = xBinaryToStringEnd Function Set Obj = CreateObject("Msxml2.XMLHTTP")ip = Request.ServerVariables("REMOTE_ADDR") '"200.33.156.233"strURL = "http://www.ipgeo.com.br/Rel01.asp?ip="& ipOn Error resume Next Obj.open "GET",strURL,False Obj.send strURL = BinaryToString(Obj.responseBody) AchaInicio = Instr(1,strURL,".") AchaInicio2 = Cint(Instr(AchaInicio,strURL,"<td>"))+0 AchaFim = Instr(AchaInicio2,strURL,"</td>") Diferenca = Cint(AchaFim - AchaInicio2) cidade = Mid(strURL,AchaInicio2,Diferenca) estado = Mid(strURL,AchaInicio2+50,Diferenca+2) pais="BR" If Err <> 0 Then 'se ip não for no Brasil procura internacional On Error resume Next strURL = "http://www.programacionweb.net/utilidades/paisip.php?url=" & ip obj.open "GET",strURL,False obj.send strURL = BinaryToString(Obj.ResponseBody) AchaInicio = Instr(1,strURL,"banderas/") AchaInicio2 = Cint(Instr(AchaInicio,strURL," /> "))+3 AchaFim = Instr(AchaInicio2,strURL,"</td>") Diferenca = Cint(AchaFim - AchaInicio2) Response.Write Mid(strURL,AchaInicio2,Diferenca) If Err <> 0 Then 'se ocorrer erro no ip internacional exibe erro Response.Write("erro") end if Else 'se ip for no Brasil mostra os dados Response.Write(cidade&"<br>") Response.Write(estado&"<br>") Response.Write(pais) End If%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.