---
name: "HTML::FormHandler::TraitFor::Captcha"
section: "3pm"
platform: "linux"
package: "libhtml-formhandler-perl"
version: "0.40068-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/HTML::FormHandler::TraitFor::Captcha"
---

# HTML::FormHandler::TraitFor::Captcha(3pm)

generate and validate captchas

## NAME

HTML::FormHandler::TraitFor::Captcha - generate and validate captchas

## VERSION

version 0.40068

## SYNOPSIS

A role to use in a form to implement a captcha field.

```
   package MyApp::Form;
   use HTML::FormHandler::Moose;
   with 'HTML::FormHandler::TraitFor::Captcha';
```

or

```
   my $form = MyApp::Form->new( traits => ['HTML::FormHandler::TraitFor::Captcha'],
       ctx => $c );
```

Needs a context object set in the form's 'ctx' attribute which has a session hashref in which to store a 'captcha' hashref, such as is provided by Catalyst session plugin.

## METHODS

### get\_captcha

Get a captcha stored in `"$form->ctx->{session}"`

## set\_captcha

Set a captcha in `"$self->ctx->{session}"`

### captcha\_image\_url

Default is '/captcha/image'. Override in a form to change.

```
   sub captcha_image_url { '/my/image/url/' }
```

Example of a Catalyst action to handle the image:

```
    sub image : Local {
        my ( $self, $c ) = @_;
        my $captcha = $c->session->{captcha};
        $c->response->body($captcha->{image});
        $c->response->content_type('image/'. $captcha->{type});
        $c->res->headers->expires( time() );
        $c->res->headers->header( 'Last-Modified' => HTTP::Date::time2str );
        $c->res->headers->header( 'Pragma'        => 'no-cache' );
        $c->res->headers->header( 'Cache-Control' => 'no-cache' );
    }
```

## AUTHOR

FormHandler Contributors - see HTML::FormHandler

## COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Gerda Shank.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
