SfCaptchaGDPlugin is a project mainly written in PHP, based on the View license.
Personal mirror for usage as submodule
The sfCaptchaGDPlugin
is a symfony plugin that provides captcha functionality based on GD library.
It gives you the lib with Captcha class and the module to secure your symfony forms in a minute with a good captcha.
php symfony plugin:install sfCaptchaGDPlugin
php symfony plugin:install sfCaptchaGDPlugin --release=1.0.7
php symfony plugin-install http://plugins.symfony-project.com/sfCaptchaGDPlugin
Enable one or more modules, add I18N helper and enable internationalization in your settings.yml
all:
.settings:
enabled_modules: [default, sfCaptchaGD]
standard_helpers: [Partial, Cache, I18N]
i18n: true
symfony cc
Add captcha field in your form class:
$this->setWidgets(array(
'captcha' => new sfWidgetCaptchaGD(),
));
$this->setValidators(array(
'captcha' => new sfCaptchaGDValidator(array('length' => 4)),
));
Length - captcha length, optional.
Don't forget to bind captcha value to form like this:
$this->form->bind(array(
'captcha' => $request->getParameter('captcha'),
));
Put the following lines inside of your form
<?php if ($sf_request->hasError('captcha')) echo form_error('captcha') ?>
<?php echo input_tag('captcha', $sf_params->get('captcha')) ?><br>
<a href='' onClick='return false' title='Reload image'><img src='/captcha?<?php echo time(); ?>' onClick='this.src="/captcha?r=" + Math.random() + "&reload=1"'></a>
Put the following code into your form's validator yml file:
fields:
captcha:
required:
msg: Enter characters from image
sfCaptchaGDValidator:
captcha_error: Entered characters are wrong, try again
These options are default for captcha, you can change any of them, putting in app.yml
all:
sf_captchagd:
image_width: 100 # image width in pixels
image_height: 30 # image height in pixels
chars: "123456789" # possible chars in captcha
length: 4 # length of captcha
font_size: 18 # font size
force_new_captcha: false # if true - captcha regenerated EVERY request, even if user input true value before
# possible chars colors
font_color: ["252525", "8b8787", "550707", "3526E6", "88531E"]
# chars fonts
fonts: ["akbar/akbar.ttf", "brushcut/BRUSHCUT.TTF", "molten/molten.ttf", "planet_benson/Planetbe.ttf", "whoobub/WHOOBUB_.TTF"]
background_color: DDDDDD # image background color
border_color: 000000 # image border color
== TODO ==
None at this moment.