How I Stop Spammers On My ColdFusion Blog

<cffunction name="DeSpamEquation" access="public" returntype="string" output="false"
	hint="Returns the math equation with some extra stuff in there.">
 
	<!--- Define arguments. --->
	<cfargument name="Value1" type="string" required="yes" />
	<cfargument name="Value2" type="string" required="yes" />
	<cfargument name="Operator" type="string" required="yes" />
	<cfargument name="VisibleClasses" type="string" required="yes" />
	<cfargument name="HiddenClasses" type="string" required="yes" />
 
	<cfscript>
 
		// Define the local scope.
		var LOCAL = StructNew();
 
		// Create results string.
		LOCAL.Result = CreateObject( "java", "java.lang.StringBuffer" ).Init();
 
		// Create a random number of buffer zones.
		LOCAL.BufferSize1 = RandRange( 1, 5 );
		LOCAL.BufferSize2 = RandRange( 1, 5 );
		LOCAL.BufferSize3 = RandRange( 1, 5 );
 
		// Get the class list size.
		LOCAL.VisibleClassesLength = ListLen( ARGUMENTS.VisibleClasses );
		LOCAL.HiddenClassesLength = ListLen( ARGUMENTS.HiddenClasses );
 
		// Add a hidden operator.
		LOCAL.Result.Append( "<span class=""#ListGetAt( ARGUMENTS.HiddenClasses, RandRange( 1, LOCAL.HiddenClassesLength ) )#"">" );
		LOCAL.Result.Append( VARIABLES.Library.Text.ToAsciiString( "-" ) );
		LOCAL.Result.Append( "</span> " );
 
		// Create a random number of fake spans.
		for ( LOCAL.Index = 1 ; LOCAL.Index LTE LOCAL.BufferSize1 ; LOCAL.Index = (LOCAL.Index + 1)){
 
			LOCAL.Result.Append( "<span class=""#ListGetAt( ARGUMENTS.HiddenClasses, RandRange( 1, LOCAL.HiddenClassesLength ) )#"">" );
			LOCAL.Result.Append( VARIABLES.Library.Text.ToAsciiString( RandRange( 3, 20 ) ) );
			LOCAL.Result.Append( "</span> " );
 
		}
 
		// Add a hidden operator.
		LOCAL.Result.Append( "<span class=""#ListGetAt( ARGUMENTS.HiddenClasses, RandRange( 1, LOCAL.HiddenClassesLength ) )#"">" );
		LOCAL.Result.Append( VARIABLES.Library.Text.ToAsciiString( "-" ) );
		LOCAL.Result.Append( "</span> " );
 
		// Add the first value.
		LOCAL.Result.Append( "<span class=""#ListGetAt( ARGUMENTS.VisibleClasses, RandRange( 1, LOCAL.VisibleClassesLength ) )#"">" );
		LOCAL.Result.Append( VARIABLES.Library.Text.ToAsciiString( ARGUMENTS.Value1 ) );
		LOCAL.Result.Append( "</span> " );
 
		// Add a hidden operator.
		LOCAL.Result.Append( "<span class=""#ListGetAt( ARGUMENTS.HiddenClasses, RandRange( 1, LOCAL.HiddenClassesLength ) )#"">" );
		LOCAL.Result.Append( VARIABLES.Library.Text.ToAsciiString( "+" ) );
		LOCAL.Result.Append( "</span> " );
 
		// Create a random number of fake spans.
		for ( LOCAL.Index = 1 ; LOCAL.Index LTE LOCAL.BufferSize2 ; LOCAL.Index = (LOCAL.Index + 1)){
 
			LOCAL.Result.Append( "<span class=""#ListGetAt( ARGUMENTS.HiddenClasses, RandRange( 1, LOCAL.HiddenClassesLength ) )#"">" );
			LOCAL.Result.Append( VARIABLES.Library.Text.ToAsciiString( RandRange( 5, 20 ) ) );
			LOCAL.Result.Append( "</span> " );
 
		}
 
		// Add the operator.
		LOCAL.Result.Append( "<span class=""#ListGetAt( ARGUMENTS.VisibleClasses, RandRange( 1, LOCAL.VisibleClassesLength ) )#"">" );
		LOCAL.Result.Append( VARIABLES.Library.Text.ToAsciiString( ARGUMENTS.Operator ) );
		LOCAL.Result.Append( "</span> " );
 
		// Create a random number of fake spans.
		for ( LOCAL.Index = 1 ; LOCAL.Index LTE LOCAL.BufferSize2 ; LOCAL.Index = (LOCAL.Index + 1)){
 
			LOCAL.Result.Append( "<span class=""#ListGetAt( ARGUMENTS.HiddenClasses, RandRange( 1, LOCAL.HiddenClassesLength ) )#"">" );
			LOCAL.Result.Append( VARIABLES.Library.Text.ToAsciiString( RandRange( 6, 20 ) ) );
			LOCAL.Result.Append( "</span> " );
 
		}
 
		// Add the second value.
		LOCAL.Result.Append( "<span class=""#ListGetAt( ARGUMENTS.VisibleClasses, RandRange( 1, LOCAL.VisibleClassesLength ) )#"">" );
		LOCAL.Result.Append( VARIABLES.Library.Text.ToAsciiString( ARGUMENTS.Value2 ) );
		LOCAL.Result.Append( "</span> " );
 
		// Add a hidden operator.
		LOCAL.Result.Append( "<span class=""#ListGetAt( ARGUMENTS.HiddenClasses, RandRange( 1, LOCAL.HiddenClassesLength ) )#"">" );
		LOCAL.Result.Append( VARIABLES.Library.Text.ToAsciiString( "+" ) );
		LOCAL.Result.Append( "</span> " );
 
		// Create a random number of fake spans.
		for ( LOCAL.Index = 1 ; LOCAL.Index LTE LOCAL.BufferSize3 ; LOCAL.Index = (LOCAL.Index + 1)){
 
			LOCAL.Result.Append( "<span class=""#ListGetAt( ARGUMENTS.HiddenClasses, RandRange( 1, LOCAL.HiddenClassesLength ) )#"">" );
			LOCAL.Result.Append( VARIABLES.Library.Text.ToAsciiString( RandRange( 3, 20 ) ) );
			LOCAL.Result.Append( "</span> " );
 
		}
 
 
		// Return the span test.
		return( LOCAL.Result.ToString() );
 
	</cfscript>
</cffunction>

For Cut-and-Paste