ASP Classic CAPTCHA Request Dynamic Settings Code Example (BotDetect ASP v4.x; discontinued)
The ASP Classic Captcha request dynamic settings code example shows how to dynamically adjust BotDetect CAPTCHA configuration, potentially on each Http request made by the client.
Multiple ASP forms within the same ASP website can be protected by BotDetect Captcha challenges: e.g. you could include BotDetect.asp
in both your Contact form and Registration form source.
Any ASP code setting Captcha properties in the CaptchaConfig.asp
file will be executed not only for each protected form GET or POST request (like Captcha configuration code placed in form source would be), but also for each each GET request loading a Captcha image or sound, or making an Ajax Captcha validation call.
If configured values are dynamic (e.g. BD randomization or other function calls in CaptchaConfig.asp
code), they will be re-calculated for each Captcha challenge generated. For example, Captcha ImageStyle
randomized in CaptchaConfig.asp
code will change on each Captcha reload button click.
This means your code can reliably keep track of visitor interaction with the Captcha challenge and dynamically adjust its settings. Also, while CaptchaConfig.asp
settings apply to all Captcha instances by default, you can also selectively apply them based on CaptchaId.
To show an example of the possible dynamic Captcha configuration adjustments, this code example increases the difficulty of the Captcha test if the visitor associated with the current PHP Session fails a certain number of Captcha validation attempts, and also sets the Captcha locale to Chinese for requests from a certain IP range.
Installed Location
By default, the Classic ASP request dynamic settings code example is installed at:
C:\Program Files\Captcha Inc\BotDetect 4 CAPTCHA Component\Asp\WebApp\CaptchaRequestDynamicSettingsExample
You can also run it from the BotDetect Start Menu:
Programs > Captcha Inc > BotDetect 4 CAPTCHA Component > ASP > Web Applications > Run
Default.asp
<!-- #include file ="BotDetect.asp" --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>BotDetect ASP Classic CAPTCHA Options: Request Dynamic Settings Code Example</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link type="text/css" rel="Stylesheet" href="<%= CaptchaUrls.LayoutStylesheetUrl() %>" /> <link type="text/css" rel="Stylesheet" href="StyleSheet.css" /> </head> <body> <form method="post" action="" class="column" id="form1"> <h1>BotDetect ASP Classic CAPTCHA Options: <br /> Request Dynamic Settings Code Example</h1> <fieldset> <legend>ASP Classic CAPTCHA validation</legend> <label for="CaptchaCode">Retype the characters from the picture:</label> <% ' Adding BotDetect CAPTCHA to the page Dim DynamicCaptcha : Set DynamicCaptcha = (New Captcha)( "DynamicCaptcha")DynamicCaptcha.UserInputID = "CaptchaCode" Response.Write DynamicCaptcha.Html %> <div class="validationDiv"> <input name="CaptchaCode" type="text" id="CaptchaCode" /> <input type="submit" name="ValidateCaptchaButton" value="Validate" id="ValidateCaptchaButton" /> <% ' CAPTCHA user input validation (only if the form was sumbitted) If Request.ServerVariables("REQUEST_METHOD") = "POST" Then Dim isHuman : isHuman = DynamicCaptcha.Validate() If Not isHuman Then ' CAPTCHA validation failed, show error message Response.Write "<span class=""incorrect"">Incorrect code</span> " ' increment failed validations count Dim count : count = 0 Dim temp : temp = Session("FailedValidationsCount") If (Not IsEmpty(temp) And IsNumeric(temp)) Then count = CInt(temp) End If count = count + 1 Session("FailedValidationsCount") = count Else ' CAPTCHA validation passed, perform protected action Response.Write "<span class=""correct"">Correct code</span>" ' reset failed validations count Session("FailedValidationsCount") = Empty End If End If %> </div> </fieldset> <div id="output"> <% Dim failed : failed = 0 Dim saved : saved = Session("FailedValidationsCount") If (Not IsEmpty(saved) And IsNumeric(saved)) Then failed = CInt(saved) End If Response.Write "<p>Failed Captcha validations: " & failed & "</p>" If (failed < 3) Then Response.Write "<p>Dynamic Captcha difficulty: Easy</p>" ElseIf (failed < 10) Then Response.Write "<p>Dynamic Captcha difficulty: Moderate</p>" Else Response.Write "<p>Dynamic Captcha difficulty: Hard</p>" End If %> </div> </form> </body> </html>
CaptchaConfig.asp
<% ' BotDetect ASP Captcha configuration options ' --------------------------------------------------------------------------- ' BotDetect.asp settings are usually global and apply to all Captcha instances in ' the application; if some settings need to be apply only to a particular Captcha ' instance, this is how settings can be conditionally applied based on CaptchaId If (0 = StrComp(BDC_CurrentCaptchaId, "DynamicCaptcha", vbTextCompare)) Then BotDetect.SoundEnabled = False End If ' re-calculated on each image request Dim imageStyleNames(2) imageStyleNames(0) = "Graffiti" imageStyleNames(1) = "SunAndWarmAir" imageStyleNames(2) = "Overlap" BotDetect.ImageStyle = BDC_RandomImageStyleFrom(imageStyleNames) ' dynamic Captcha settings depending on failed validation attempts: increase Captcha ' difficulty according to number of previously failed validations Dim count : count = 0 Dim temp : temp = Session("FailedValidationsCount") If (Not IsEmpty(temp) And IsNumeric(temp)) Then count = CInt(temp) End If If (count < 3) Then BotDetect.CodeLength = BDC_RandomFromRange(3, 4) BotDetect.CodeStyle = BDC_CodeStyles("Numeric") BotDetect.CodeTimeout = 600 ' 10 minutes ElseIf (count < 10) Then BotDetect.CodeLength = BDC_RandomFromRange(4, 6) BotDetect.CodeStyle = BDC_CodeStyles("Alpha") BotDetect.CodeTimeout = 180 ' 3 minutes Else BotDetect.CodeLength = BDC_RandomFromRange(6, 9) BotDetect.CodeStyle = BDC_CodeStyles("Alphanumeric") BotDetect.CodeTimeout = 60 ' 1 minute End If ' set Captcha locale to Chinese for requests from a certain IP range Dim TestIpRange : TestIpRange = "223.254." Dim userIPAddress : userIPAddress = Request.ServerVariables("REMOTE_ADDR") If (userIPAddress <> "" And InStr(1, userIPAddress, TestIpRange, 1) = 1) Then BotDetect.CodeStyle = BDC_CodeStyles("Alpha") BotDetect.Locale = "cmn" End If BotDetect.HelpLinkMode = BDC_HelpLinkModes("Image") %>
Please Note
The information on this page applies to a discontinued version of BotDetect™ ASP CAPTCHA (v4.x)
Current BotDetect Versions
-
BotDetect ASP.NET CAPTCHA
2019-07-22v4.4.2 -
BotDetect Java CAPTCHA
2019-07-22v4.0.Beta3.7 -
BotDetect PHP CAPTCHA
2019-07-22v4.2.5