First, I like Charlie's function, its simple and it looks like it would work well.

However, if you are looking for alternatives, you can always use a regular _expression_.

<cfif REFindNoCase("(badterm1|badterm2|badterm3)",cgi.http_user_agent) IS NOT 0>

There is plenty of information on regular expressions all over the web if you want to be more creative, but essentially, you can put all your choices in one set of enclosing parens with a "|" as an OR separator. You can use "^" or "$" to only check at the begining or end of a string.

For example we can do this...

<cfset variables.regexpstring = '(badterm1$|^badterm2|badterm3|^badterm4$)'>
<cfif REFindNoCase(variables.regexpstring,cgi.http_user_agent) IS NOT 0>

This will find badterm3 anywhere within the string, badterm2 only when it starts the string, badterm1 only when it ends the string, and badterm4 only when it is the entire string.

This is only the tip of the iceberg, there are many, many more options for regular expressions. Once you start using them, you will wonder how you managed without them. In addition, regular expressions can be used in _javascript_, Oracle, MySQL, perl, and the majority of modern programming languages.



On 08/25/2011 09:22 AM, Clint Willard wrote:
Quick glance I'd say listFindNoCase(searchTermList,cgi.http_user_agent). Put the search terms in a list to find.

Clint Willard
Senior ColdFusion Programmer Analyst
[email protected]
h) 770-965-6074
m) 706-714-5502



On Wed, Aug 24, 2011 at 5:06 PM, Derrick Peavy <[email protected]> wrote:
Looking for a clever solution to this problem.

I have some code on a site that checks for known spiders/bots and malicious user agents.   The list of "known" is baout 50 or so long. 

One solution could be:

(findNoCase('#searchTerm#', cgi.http_user_agent)) OR 
(findNoCase('#searchTerm#', cgi.http_user_agent)) OR 
(findNoCase('#searchTerm#', cgi.http_user_agent)) OR ... etc and so on, 50 times.

Another solution could be:
<cfif findNoCase('#searchTerm#', cgi.http_user_agent)>do something</cfif> and repeat that complete CFIF 50 times.

What is a creative way to solve this without so many IF's and minimal processing? 

Alos, the list of user agents can be either file based or pulled from a DB. I've done it both ways and I have used both solutions above. Don't see a difference, but it just seems rather crude. 

__________________
Derrick Peavy

“Innovation distinguishes between a leader and a follower.” - Steve Jobs
"In economics, the majority is always wrong." - John Kenneth Galbraith
_____________________




-------------------------------------------------------------
To unsubscribe from this list, manage your profile @
http://www.acfug.org?fa=login.edituserform

For more info, see http://www.acfug.org/mailinglists
Archive @ http://www.mail-archive.com/discussion%40acfug.org/
List hosted by http://www.fusionlink.com
-------------------------------------------------------------

Reply via email to