Packages:
default
System
System.Caching
System.Collections
System.Data
System.Data.ActiveRecord
System.Data.ActiveRecord.Relations
System.Data.ActiveRecord.Scaffold
System.Data.ActiveReecord.Scaffold.InputBuilder
System.Data.Commom.Sqlite
System.Data.Common
System.Data.Common.Mssql
System.Data.Common.Mysql
System.Data.Common.Oracle
System.Data.Common.Pgsql
System.Data.Common.Sqlite
System.Data.DataGateway
System.Data.SqlMap
System.Data.SqlMap.Configuration
System.Data.SqlMap.Statements
System.Exceptions
System.I18N
System.IO
System.Security
System.Util
System.Web
System.Web.Services
System.Web.UI
System.Web.UI.ActiveControls
System.Web.UI.WebControls
System.Web.UI.WebControls.assets
System.Xml


Classes:
IDataSource
IItemDataRenderer
IRepeatInfoUser
TActiveFileUpload
TBaseDataList
TBaseValidator
TBoundColumn
TBulletedList
TBulletedListDisplayMode
TBulletedListEventParameter
TBulletStyle
TButton
TButtonColumn
TButtonColumnType
TButtonType
TCaptcha
TCaptchaValidator
TCheckBox
TCheckBoxColumn
TCheckBoxList
TCircleHotSpot
TClientScript
TClientScriptLoader
TClientSideValidationSummaryOptions
TColorPicker
TColorPickerClientSide
TColorPickerMode
TCompareValidator
TCompleteWizardStep
TConditional
TContent
TContentDirection
TContentPlaceHolder
TCustomValidator
TDataBoundControl
TDataGrid
TDataGridColumn
TDataGridColumnCollection
TDataGridCommandEventParameter
TDataGridItem
TDataGridItemCollection
TDataGridItemEventParameter
TDataGridItemRenderer
TDataGridPageChangedEventParameter
TDataGridPager
TDataGridPagerButtonType
TDataGridPagerEventParameter
TDataGridPagerMode
TDataGridPagerPosition
TDataGridPagerStyle
TDataGridSortCommandEventParameter
TDataList
TDataListCommandEventParameter
TDataListItem
TDataListItemCollection
TDataListItemEventParameter
TDataListItemRenderer
TDataRenderer
TDataSourceControl
TDataSourceSelectParameters
TDataSourceView
TDataTypeValidator
TDatePicker
TDatePickerClientScript
TDatePickerInputMode
TDatePickerMode
TDatePickerPositionMode
TDisplayStyle
TDraggable
TDropContainer
TDropDownList
TDropDownListColumn
TEditCommandColumn
TEmailAddressValidator
TExpression
TFileUpload
TFont
THiddenField
THorizontalAlign
THotSpot
THotSpotCollection
THotSpotMode
THtmlArea
THtmlElement
THyperLink
THyperLinkColumn
TImage
TImageButton
TImageClickEventParameter
TImageMap
TImageMapEventParameter
TInlineFrame
TInlineFrameAlign
TInlineFrameScrollBars
TItemDataRenderer
TJavascriptLogger
TKeyboard
TLabel
TLinkButton
TListBox
TListControl
TListControlValidator
TListItem
TListItemCollection
TListItemType
TListSelectionMode
TLiteral
TLiteralColumn
TMarkdown
TMetaTag
TMetaTagCollection
TMultiView
TOutputCache
TOutputCacheCalculateKeyEventParameter
TOutputCacheCheckDependencyEventParameter
TPager
TPagerButtonType
TPagerMode
TPagerPageChangedEventParameter
TPanel
TPanelStyle
TPlaceHolder
TPolygonHotSpot
TRadioButton
TRadioButtonList
TRangeValidationDataType
TRangeValidator
TRatingList
TReadOnlyDataSource
TReadOnlyDataSourceView
TRectangleHotSpot
TRegularExpressionValidator
TRepeatDirection
TRepeater
TRepeaterCommandEventParameter
TRepeaterItem
TRepeaterItemCollection
TRepeaterItemEventParameter
TRepeaterItemRenderer
TRepeatInfo
TRepeatLayout
TRequiredFieldValidator
TSafeHtml
TScrollBars
TServerValidateEventParameter
TSlider
TSliderClientScript
TSliderDirection
TStatements
TStyle
TStyleSheet
TTable
TTableCaptionAlign
TTableCell
TTableCellCollection
TTableFooterRow
TTableGridLines
TTableHeaderCell
TTableHeaderRow
TTableHeaderScope
TTableItemStyle
TTableRow
TTableRowCollection
TTableRowSection
TTableStyle
TTabPanel
TTabView
TTabViewCollection
TTemplateColumn
TTemplatedWizardStep
TTextAlign
TTextBox
TTextBoxAutoCompleteType
TTextBoxMode
TTextHighlighter
TTextHighlighterLineNumberStyle
TValidationCompareOperator
TValidationDataType
TValidationSummary
TValidationSummaryDisplayMode
TValidationSummaryDisplayStyle
TValidatorClientSide
TValidatorDisplayStyle
TVerticalAlign
TView
TViewCollection
TWebControl
TWebControlAdapter
TWizard
TWizardFinishNavigationTemplate
TWizardNavigationButtonStyle
TWizardNavigationButtonType
TWizardNavigationContainer
TWizardNavigationEventParameter
TWizardNavigationTemplate
TWizardSideBarListItemTemplate
TWizardSideBarTemplate
TWizardStartNavigationTemplate
TWizardStep
TWizardStepCollection
TWizardStepNavigationTemplate
TWizardStepType
TXmlTransform
Keyword

Class TCaptcha

TCaptcha class.

TCaptcha displays a CAPTCHA (a token displayed as an image) that can be used to determine if the input is entered by a real user instead of some program.

Unlike other CAPTCHA scripts, TCaptcha does not need session or cookie.

The token (a string consisting of alphanumeric characters) displayed is automatically generated and can be configured in several ways. To specify the length of characters in the token, set MinTokenLength and MaxTokenLength. To use case-insensitive comparison and generate upper-case-only token, set CaseSensitive to false. Advanced users can try to set TokenAlphabet, which specifies what characters can appear in tokens.

The validation of the token is related with two properties: TestLimit and TokenExpiry. The former specifies how many times a token can be tested with on the server side, and the latter says when a generated token will expire.

To specify the appearance of the generated token image, set TokenImageTheme to be an integer between 0 and 63. And to adjust the generated image size, set TokenFontSize (you may also set TWebControl::setWidth, but the scaled image may not look good.) By setting ChangingTokenBackground to true, the image background of the token will be variating even though the token is the same during postbacks.

Upon postback, user input can be validated by calling validate(). The TCaptchaValidator control can also be used to do validation, which provides client-side validation besides the server-side validation. By default, the token will remain the same during multiple postbacks. A new one can be generated by calling regenerateToken() manually.

The following template shows a typical use of TCaptcha control:

  1. <com:TCaptcha ID="Captcha" />
  2. <com:TTextBox ID="Input" />
  3. <com:TCaptchaValidator CaptchaControl="Captcha"
  4. ControlToValidate="Input"
  5. ErrorMessage="You are challenged!" />

Since: 3.1.1
Author: Qiang Xue <qiang.xue@gmail.com>
Constants Inherited From TControl
AUTOMATIC_ID_PREFIX, CLIENT_ID_SEPARATOR, CS_CHILD_INITIALIZED, CS_CONSTRUCTED, CS_INITIALIZED, CS_LOADED, CS_PRERENDERED, CS_STATE_LOADED, ID_FORMAT, ID_SEPARATOR, IS_CHILD_CREATED, IS_CREATING_CHILD, IS_DISABLE_THEMING, IS_DISABLE_VIEWSTATE, IS_ID_SET, IS_SKIN_APPLIED, IS_STYLESHEET_APPLIED, RF_ADAPTER, RF_AUTO_BINDINGS, RF_CHILD_STATE, RF_CONTROLS, RF_CONTROLSTATE, RF_DATA_BINDINGS, RF_EVENTS, RF_NAMED_CONTROLS, RF_NAMED_CONTROLS_ID, RF_NAMED_OBJECTS, RF_SKIN_ID,

Method Summary
boolean
Checks the requirements needed for generating CAPTCHA images.
protected  string
Generates a file with a randomly generated private key.
protected  string
protected  string
generateToken ( string $publicKey, string $privateKey, integer $alphabet, boolean $tokenLength, mixed $caseSensitive)
Generates the token.
protected  string
boolean
boolean
protected  void
boolean
integer
integer
string
string
integer
string
string
integer
integer
protected  string
integer
protected  integer
protected  string
hash2string ( string $hex, string $alphabet)
Converts a hash string into a string with characters consisting of alphanumeric characters.
void
onPreRender ( mixed $param)
Configures the image URL that shows the token.
void
Regenerates the token to be displayed.
void
setCaseSensitive ( boolean $value)
void
setChangingTokenBackground ( boolean $value)
void
setMaxTokenLength ( integer $value)
void
setMinTokenLength ( integer $value)
void
setPublicKey ( string $value)
void
setTestLimit ( integer $value)
void
setTokenAlphabet ( string $value)
void
setTokenExpiry ( integer $value)
void
setTokenFontSize ( integer $value)
Sets the font size used for displaying the token in an image.
void
setTokenImageTheme ( integer $value)
Sets the theme of the token image.
boolean
validate ( string $input)
Validates a user input with the token.
Methods Inherited From TImage
TImage::addAttributesToRender(), TImage::getAlternateText(), TImage::getData(), TImage::getDescriptionUrl(), TImage::getImageAlign(), TImage::getImageUrl(), TImage::getTagName(), TImage::renderContents(), TImage::setAlternateText(), TImage::setData(), TImage::setDescriptionUrl(), TImage::setImageAlign(), TImage::setImageUrl()
Methods Inherited From TWebControl
TWebControl::addAttributesToRender(), TWebControl::clearStyle(), TWebControl::copyBaseAttributes(), TWebControl::createStyle(), TWebControl::getAccessKey(), TWebControl::getBackColor(), TWebControl::getBorderColor(), TWebControl::getBorderStyle(), TWebControl::getBorderWidth(), TWebControl::getCssClass(), TWebControl::getDisplay(), TWebControl::getFont(), TWebControl::getForeColor(), TWebControl::getHasStyle(), TWebControl::getHeight(), TWebControl::getStyle(), TWebControl::getTabIndex(), TWebControl::getTagName(), TWebControl::getToolTip(), TWebControl::getWidth(), TWebControl::render(), TWebControl::renderBeginTag(), TWebControl::renderContents(), TWebControl::renderEndTag(), TWebControl::setAccessKey(), TWebControl::setBackColor(), TWebControl::setBorderColor(), TWebControl::setBorderStyle(), TWebControl::setBorderWidth(), TWebControl::setCssClass(), TWebControl::setDisplay(), TWebControl::setForeColor(), TWebControl::setHeight(), TWebControl::setStyle(), TWebControl::setTabIndex(), TWebControl::setToolTip(), TWebControl::setWidth()
Methods Inherited From TControl
TControl::addedControl(), TControl::addParsedObject(), TControl::addToPostDataLoader(), TControl::applyStyleSheetSkin(), TControl::autoBindProperty(), TControl::autoDataBindProperties(), TControl::bindProperty(), TControl::broadcastEvent(), TControl::bubbleEvent(), TControl::clearChildState(), TControl::clearControlState(), TControl::clearNamingContainer(), TControl::clearViewState(), TControl::convertUniqueIdToClientId(), TControl::createChildControls(), TControl::createControlCollection(), TControl::dataBind(), TControl::dataBindChildren(), TControl::dataBindProperties(), TControl::ensureChildControls(), TControl::findControl(), TControl::findControlsByID(), TControl::findControlsByType(), TControl::focus(), TControl::getAdapter(), TControl::getAllowChildControls(), TControl::getAttribute(), TControl::getAttributes(), TControl::getChildControlsCreated(), TControl::getClientID(), TControl::getControls(), TControl::getControlStage(), TControl::getControlState(), TControl::getCustomData(), TControl::getEnabled(), TControl::getEnableTheming(), TControl::getEnableViewState(), TControl::getHasAdapter(), TControl::getHasAttributes(), TControl::getHasChildInitialized(), TControl::getHasControls(), TControl::getHasInitialized(), TControl::getHasLoaded(), TControl::getHasLoadedPostData(), TControl::getHasPreRendered(), TControl::getID(), TControl::getNamingContainer(), TControl::getPage(), TControl::getParent(), TControl::getRegisteredObject(), TControl::getSkinID(), TControl::getSourceTemplateControl(), TControl::getTemplateControl(), TControl::getUniqueID(), TControl::getViewState(), TControl::getVisible(), TControl::hasAttribute(), TControl::initRecursive(), TControl::isDescendentOf(), TControl::isObjectRegistered(), TControl::loadRecursive(), TControl::loadState(), TControl::loadStateRecursive(), TControl::onDataBinding(), TControl::onInit(), TControl::onLoad(), TControl::onPreRender(), TControl::onUnload(), TControl::preRenderRecursive(), TControl::raiseBubbleEvent(), TControl::registerObject(), TControl::removeAttribute(), TControl::removedControl(), TControl::render(), TControl::renderChildren(), TControl::renderControl(), TControl::saveState(), TControl::saveStateRecursive(), TControl::setAdapter(), TControl::setAttribute(), TControl::setChildControlsCreated(), TControl::setControlStage(), TControl::setControlState(), TControl::setCustomData(), TControl::setEnabled(), TControl::setEnableTheming(), TControl::setEnableViewState(), TControl::setID(), TControl::setPage(), TControl::setSkinID(), TControl::setTemplateControl(), TControl::setViewState(), TControl::setVisible(), TControl::trackViewState(), TControl::traverseChildControls(), TControl::unbindProperty(), TControl::unloadRecursive(), TControl::unregisterObject(), TControl::__get()
Methods Inherited From TApplicationComponent
TApplicationComponent::getApplication(), TApplicationComponent::getRequest(), TApplicationComponent::getResponse(), TApplicationComponent::getService(), TApplicationComponent::getSession(), TApplicationComponent::getUser(), TApplicationComponent::publishAsset(), TApplicationComponent::publishFilePath()
Methods Inherited From TComponent
TComponent::addParsedObject(), TComponent::attachEventHandler(), TComponent::canGetProperty(), TComponent::canSetProperty(), TComponent::createdOnTemplate(), TComponent::detachEventHandler(), TComponent::evaluateExpression(), TComponent::evaluateStatements(), TComponent::getEventHandlers(), TComponent::getSubProperty(), TComponent::hasEvent(), TComponent::hasEventHandler(), TComponent::hasProperty(), TComponent::raiseEvent(), TComponent::setSubProperty(), TComponent::__get(), TComponent::__set()

Constant Summary
int MAX_TOKEN_LENGTH
int MIN_TOKEN_LENGTH

Method Details

checkRequirements

public boolean checkRequirements ()

Checks the requirements needed for generating CAPTCHA images.

TCaptach requires GD2 with TrueType font support and PNG image support.

Output
boolean whether the requirements are satisfied.
Exception

generatePrivateKeyFile

protected string generatePrivateKeyFile ()

Generates a file with a randomly generated private key.

Output
string the path of the file keeping the private key
Exception

generateRandomKey

protected string generateRandomKey ()

Output
string a randomly generated key
Exception

generateToken

protected string generateToken (string $publicKey , string $privateKey , integer $alphabet , boolean $tokenLength , mixed $caseSensitive )

Generates the token.

Input
string$publicKeypublic key
string$privateKeyprivate key
integer$alphabetthe length of the token
boolean$tokenLengthwhether the token is case sensitive
mixed$caseSensitive
Output
string the token generated.
Exception

getCaptchaScriptFile

protected string getCaptchaScriptFile ()

Output
string the file path of the PHP script generating the token image
Exception

getCaseSensitive

public boolean getCaseSensitive ()

Output
boolean whether the token should be treated as case-sensitive. Defaults to true.
Exception

getChangingTokenBackground

public boolean getChangingTokenBackground ()

Output
boolean whether the background of the token image should be variated during postbacks. Defaults to false.
Exception

getFontFile

protected void getFontFile ()

Output
Exception

getIsTokenExpired

public boolean getIsTokenExpired ()

Output
boolean whether the currently generated token has expired.
Exception

getMaxTokenLength

public integer getMaxTokenLength ()

Output
integer the maximum length of the token. Defaults to 6.
Exception

getMinTokenLength

public integer getMinTokenLength ()

Output
integer the minimum length of the token. Defaults to 4.
Exception

getPrivateKey

public string getPrivateKey ()

Output
string the private key used for generating the token. This is randomly generated and kept in a file for persistency.
Exception

getPublicKey

public string getPublicKey ()

Output
string the public key used for generating the token. A random one will be generated and returned if this is not set.
Exception

getTestLimit

public integer getTestLimit ()

Output
integer how many times a generated token can be tested. Defaults to 5.
Exception

getToken

public string getToken ()

Output
string the token that will be displayed
Exception

getTokenAlphabet

public string getTokenAlphabet ()

Output
string the characters that may appear in the token. Defaults to '234578adefhijmnrtABDEFGHJLMNRT'.
Exception

getTokenExpiry

public integer getTokenExpiry ()

Output
integer the number of seconds that a generated token will remain valid. Defaults to 600 seconds (10 minutes).
Exception

getTokenFontSize

public integer getTokenFontSize ()

Output
integer the font size used for displaying the token in an image. Defaults to 30.
Exception

getTokenImageOptions

protected string getTokenImageOptions ()

Output
string the options to be passed to the token image generator
Exception

getTokenImageTheme

public integer getTokenImageTheme ()

Output
integer the theme of the token image. Defaults to 0.
Exception

getTokenLength

protected integer getTokenLength ()

Output
integer the length of the token to be generated.
Exception

hash2string

protected string hash2string (string $hex , string $alphabet )

Converts a hash string into a string with characters consisting of alphanumeric characters.

Input
string$hexthe hexadecimal representation of the hash string
string$alphabetthe alphabet used to represent the converted string. If empty, it means '234578adefhijmnrtwyABDEFGHIJLMNQRTWY', which excludes those confusing characters.
Output
string the converted string
Exception

onPreRender

public void onPreRender (mixed $param )

Configures the image URL that shows the token.

Input
mixed$paramevent parameter
Output
Exception

regenerateToken

public void regenerateToken ()

Regenerates the token to be displayed.

By default, a token, once generated, will remain the same during the following page postbacks. Calling this method will generate a new token.

Output
Exception

setCaseSensitive

public void setCaseSensitive (boolean $value )

Input
boolean$valuewhether the token should be treated as case-sensitive. If false, only upper-case letters will appear in the token.
Output
Exception

setChangingTokenBackground

public void setChangingTokenBackground (boolean $value )

Input
boolean$valuewhether the background of the token image should be variated during postbacks.
Output
Exception

setMaxTokenLength

public void setMaxTokenLength (integer $value )

Input
integer$valuethe maximum length of the token. It must be between 2 and 40.
Output
Exception

setMinTokenLength

public void setMinTokenLength (integer $value )

Input
integer$valuethe minimum length of the token. It must be between 2 and 40.
Output
Exception

setPublicKey

public void setPublicKey (string $value )

Input
string$valuethe public key used for generating the token. A random one will be generated if this is not set.
Output
Exception

setTestLimit

public void setTestLimit (integer $value )

Input
integer$valuehow many times a generated token can be tested. For unlimited tests, set it to 0.
Output
Exception

setTokenAlphabet

public void setTokenAlphabet (string $value )

Input
string$valuethe characters that may appear in the token. At least 2 characters must be specified.
Output
Exception

setTokenExpiry

public void setTokenExpiry (integer $value )

Input
integer$valuethe number of seconds that a generated token will remain valid. A value smaller than 1 means the token will not expire.
Output
Exception

setTokenFontSize

public void setTokenFontSize (integer $value )

Sets the font size used for displaying the token in an image.

This property affects the generated token image size. The image width is proportional to this font size.

Input
integer$valuethe font size used for displaying the token in an image. It must be an integer between 20 and 100.
Output
Exception

setTokenImageTheme

public void setTokenImageTheme (integer $value )

Sets the theme of the token image.

You may test each theme to find out the one you like the most. Below is the explanation of the theme value: It is treated as a 5-bit integer. Each bit toggles a specific feature of the image. Bit 0 (the least significant): whether the image is opaque (1) or transparent (0). Bit 1: whether we should add white noise to the image (1) or not (0). Bit 2: whether we should add a grid to the image (1) or not (0). Bit 3: whether we should add some scribbles to the image (1) or not (0). Bit 4: whether the image background should be morphed (1) or not (0). Bit 5: whether the token text should cast a shadow (1) or not (0).

Input
integer$valuethe theme of the token image. It must be an integer between 0 and 63.
Output
Exception

validate

public boolean validate (string $input )

Validates a user input with the token.

Input
string$inputuser input
Output
boolean if the user input is not the same as the token.
Exception


Constant Details

MAX_TOKEN_LENGTH

Type:

int

Value:

40

MIN_TOKEN_LENGTH

Type:

int

Value:

2