getRemoteUserInfo

Um mir selbst die Sache etwas zu erleichtern habe ich mir eine Funktion zur Ermittlung von Userdaten auf Basis dessen IP-Adresse geschrieben. Notwendig ist hierzu lediglich ein Account bei MaxMind.

Den Namen der Stadt, aus der der WebSiteUser sich eingewählt hat, kann man sich somit wie folgt anzeigen lassen:
#getRemoteUserInfo(‘217.162.206.5′,’EZKdtZojDp3m’).byName.City#

Und nun die eigentliche Funktion:
name= "getRemoteUserInfo" access= "remote" returntype= "struct" output= "false" hint= "liest Userdaten aufgrund einer IP-Adresse aus" >
 
name= "myAdress" type= "string" default= "#CGI.REMOTE_ADDR#" hint= "Die IP-Adresse zur Abfrage" >
 
name= "myLicenseKey" type= "string" required= "true" hint= "Dein LizenzKey von MaxMind" >

 

 
 
var qMaxMindByID = structNew () />
 
var qMaxMindByName = structNew () />
 
var thisField = "country,region,city,undefined,latitude,longitude,DMA,area,ISP,organization" />
 
var thisPos = 1 />
 
var thisValue = "" />
 
var stringField = "false" />
 
var resultMaxMind = "" >

  method= "get" url= "http://maxmind.com:8010/f?l=#arguments.myLicenseKey#&i=#arguments.myAdress#" >

  resultMaxMind = cfhttp.FileContent >

  from= "1" to= "#Len(resultMaxMind)#" index= "mmField" >
   
mid (resultMaxMind,mmField, 1 ) IS ‘,’ AND NOT stringField >
     
qMaxMindByID[thisPos] = thisValue >
     
qMaxMindByName[ ‘#ListgetAt(thisField,thisPos)#’ ] = thisValue >
     
thisPos = thisPos + 1 />
     
thisValue = "" />
   

     
mid (resultMaxMind,mmField, 1 ) IS ‘"’ >
       
stringField = iif (stringField, "false" , "true" ) />
     

       
thisValue = thisValue & mid (resultMaxMind,mmField, 1 ) />
     

   

    Len (resultMaxMind) EQ mmField >
     
qMaxMindByID[thisPos] = thisValue />
     
qMaxMindByName[ ‘#ListgetAt(thisField,thisPos)#’ ] = thisValue >
   

 

  resultMaxMind = structNew () >
 
resultMaxMind.byID = qMaxMindByID >
 
resultMaxMind.byName = qMaxMindByName >

  resultMaxMind >

Der einfachheithalber habe ich auf eine sichere Konvertierung der Daten von CSV verzichtet, welche aber in Beitrag CSVtoArray nachgelesen und übernommen werden können.

 

0 Antworten

Hinterlassen Sie einen Kommentar

Wollen Sie an der Diskussion teilnehmen?
Feel free to contribute!

Kommentar verfassen