Although this isn't a completely free solution we've used it with very
good success without any updates for a while now.
http://www.maxmind.com/app/geoip_features. If you are using it for
just country level access for $50 it's not a bad investment.

I've included some code for accessing checking the IP, once you have
the database loaded. Please note that the java database is much, much
faster than using the data in  a database table.

<cffunction name="getIsBadIP" access="public" returntype="boolean"
output="false">
                <cfargument name="theIP" default="" required="false" 
type="string" />
                
                <cfset var isBadIP = false />
                <cfset var clientip = arguments.theIP />
                <cfset var aIPParts = '' />
                <cfset var iIPNum = '' />
                <cfset var getIP = '' />
                <cfset var getBlackListed = '' />
                
                <!--- If no IP passed use CGI.REMOTE_ADDR if exists --->
                <cfif not len(clientIP)>
                        <cfif structKeyExists(CGI,"REMOTE_ADDR") and len 
(CGI.REMOTE_ADDR)>
                                <cfset clientip = CGI.REMOTE_ADDR />
                        </cfif>
                </cfif>
                <!--- Check that this is a valid country, if not no actions to 
be
performed --->
                
                <!--- Perform the GEOIP limiting --->
                <!--- Check if the IP address is provided --->
                <cfif len (clientIP)>
                        <cfset aIPParts = listToArray(clientip, ".") />
                        <cfif arrayLen(aIPParts) eq 4 and 
isNumeric(aIPParts[1]) and
isNumeric(aIPParts[2]) and isNumeric(aIPParts[3]) and
isNumeric(aIPParts[4])>
                                <cfset iIPNum = (aIPParts[1] * (256^3)) + 
(aIPParts[2] * (256^2))
+ (aIPParts[3] * (256^1)) + (aIPParts[4]) />
                                <cfquery name="getIP" 
datasource="#getDatasource()#">
                                        SELECT TOP 1 country FROM GeoIP
                                        WHERE
                                        CAST(#iIPNum# AS bigint) between 
CAST(begin_num AS bigint) and
CAST(end_num AS bigint)
                                </cfquery>
                                <!--- Check if the country is in the bad range 
--->
                                <cfif getIP.recordcount>
                                        <cfquery name="getBlackListed" 
datasource="#getDatasource()#">
                                                SELECT * FROM countryBlacklist
                                                WHERE country = <cfqueryparam 
cfsqltype="cf_sql_varchar"
value="#getIP.country#" />
                                        </cfquery>
                                        <cfif getBlackListed.recordcount>
                                                <cfset isBadIP = true />
                                        </cfif>
                                </cfif>
                        </cfif>
                        
                </cfif>

                
                <cfreturn isBadIP />
        </cffunction>

Hope this helps.

Best Regards,
Donnie Bachan
"Nitendo Vinces - By Striving You Shall Conquer"
======================================================================
The information transmitted is intended only for the person or entity to
which it is addressed and may contain confidential and/or privileged
material. Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by persons or
entities other than the intended recipient is prohibited. If you received
this in error, please contact the sender and delete the material from any
computer.



On Sun, Dec 25, 2011 at 5:56 AM, Phillip Vector
<[email protected]> wrote:
>
> Is there a server side solution for GeoIP that I can use? I'd like to
> make up some CF code that can detect when sites are connecting in
> areas we don't serve and direct them to a different page. Is there any
> (free) solutions for ColdFusion to detect where an IP is located?
>
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Order the Adobe Coldfusion Anthology now!
http://www.amazon.com/Adobe-Coldfusion-Anthology/dp/1430272155/?tag=houseoffusion
Archive: 
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:349237
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm

Reply via email to