Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di satoshi
    Registrato dal
    May 2002
    Messaggi
    217

    ricavare la nazione da un indirizzo ip

    prendo spunto da un articolo trovato in rete mediante il quale tramite un indirizzo ip posso ricavare la nazione di un visitatore


    questo è il link della risorsa

    http://ip-to-country.webhosting.info/node/view/54

    ho riportato tutto come spiega questo sito

    ho fatto il database in mysql che contiene circa 70.000 record mediante il file cvs aggiornato il 20 luglio del 2006

    e per ottenere la nazione ho usato questo codice



    SELECT COUNTRY_NAME FROM <TableName> WHERE IP_FROM <= IP Number and IP_TO >= IP Number


    The formula to convert an IP Address of the form A.B.C.D to an IP Number is:

    IP Number = A x (256*256*256) + B x (256*256) + C x 256 + D
    Which is the same as:

    IP Number = A x 16777216 + B x 65536 + C x 256 + D






    il mio problema è solo in parte perche' al 80% funziona ma molti per il 20% degli ip non riesco a trovare la nazione

    poi se vado sempre nella pagina del sito sopra riportato con la voce demo


    http://ip-to-country.webhosting.info/node/view/36


    ed inserisco un ip che nel mio caso non viene riconosciuto nella pagina demo riesce a visualizzare la nazione


    mi chiedo come posso fare altrettando nel mio codice?

  2. #2
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    in asp la variabile va dichiarata senza spazi...

    IP_Number = A x (256*256*256) + B x (256*256) + C x 256 + D

    poi ti consiglio di stampare cosa contiene IP_number

    poi fai un controllo manuale verificando che nel database esiste un intervallo che identifichi il tuo ip.

    se non esiste è il db non completo nei range periodici...

    cmq è un articolo interessante

    ciao.

  3. #3
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Scusa sto provando la risorsa che hai suggerito...
    ma ho capito bene:?

    codice:
    <%
    
    A = 127
    B = 0
    C = 0
    D = 1
    
    IP Number = A x (256*256*256) + B x (256*256) + C x 256 + D
    
    strsql = "SELECT COUNTRY_NAME FROM tbl_ip WHERE IP_FROM <= IP Number and IP_TO >= IP Number"
    Set objRs = Server.CreateObject("ADODB.Recordset") 
    objRs.Open strsql, objConn
    
    do while not objRs.EOF
    
    country_name = objRs("country_name")
    response.write country_name &"
    "
    
    objRs.MoveNext
    loop
    
    objRs.close 
    set objRs = nothing 
    
    objConn.close
    set objConn = Nothing
    
    %>

  4. #4
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    ho seguito il consiglio di agenti ma:

    Tipo di errore:
    Errore di compilazione di Microsoft VBScript (0x800A0401)
    Prevista fine istruzione
    /iscrizioni/origine_ip.asp, line 10, column 14
    IP_Number = A x (256*256*256) + B x (256*256) + C x 256 + D
    codice:
    <%
    
    A = 127
    B = 0
    C = 0
    D = 1
    
    IP_Number = A x (256*256*256) + B x (256*256) + C x 256 + D
    
    response.write IP_Number:response.end
    
    strsql = "SELECT COUNTRY_NAME FROM tbl_ip WHERE IP_FROM <= IP_Number and IP_TO >= IP_Number"
    Set objRs = Server.CreateObject("ADODB.Recordset") 
    objRs.Open strsql, objConn
    
    do while not objRs.EOF
    
    country_name = objRs("country_name")
    response.write country_name &"
    "
    
    objRs.MoveNext
    loop
    
    objRs.close 
    set objRs = nothing 
    
    objConn.close
    set objConn = Nothing
    
    %>

  5. #5
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    A me funziona bene:

    codice:
    <%
    
    number_ip = Request.ServerVariables("REMOTE_ADDR")
    response.write number_ip &"
    "
    
    rem number_ip = "84.228.84.70"
    rem response.write number_ip &"
    "
    
    number_ip = split(number_ip, ".")
    
    A = number_ip(0)
    B = number_ip(1)
    C = number_ip(2)
    D = number_ip(3)
    
    E = A * (256*256*256)
    response.write E &"
    "
    
    F = B * (256*256)
    response.write F &"
    "
    
    G = C * (256)
    response.write G &"
    "
    
    H = D
    response.write D &"
    "
    
    IP_Number = (E+F+G+H)
    response.write IP_Number &"
    "
    
    strsql = "SELECT COUNTRY_NAME FROM tbl_ip WHERE IP_FROM <= "& IP_Number &" and IP_TO >= "& IP_Number
    response.write strsql &"
    "
    Set objRs = Server.CreateObject("ADODB.Recordset") 
    objRs.Open strsql, objConn
    
    do while not objRs.EOF
    
    country_name = objRs("country_name")
    response.write country_name &"
    "
    
    objRs.MoveNext
    loop
    
    objRs.close 
    set objRs = nothing 
    
    objConn.close
    set objConn = Nothing
    
    %>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.