valksor / php-form-type-honey-pot
Symfony Form type for honeypot spam protection
Fund package maintenance!
Ko Fi
Thanks Dev
Issuehunt
Buy Me A Coffee
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/valksor/php-form-type-honey-pot
Requires
Requires (Dev)
- phpunit/phpunit: ^12.0
This package is auto-updated.
Last update: 2026-01-24 23:30:33 UTC
README
A Symfony Form extension that automatically adds an invisible honeypot spam trap field to your forms. If bots fill the field, submission is blocked and logged.
Installation
Install the package via Composer:
composer require valksor/php-form-type-honey-pot
Requirements
- PHP 8.4 or higher
- Symfony Form Component (>=6.4)
- Symfony HttpFoundation
- Symfony RequestStack
Usage
There are two ways to use this package: via form options or by directly configuring the extension.
Using Form Options
The extension automatically applies to any FormType (root forms) when the honeypot option is enabled:
use Symfony\Component\Form\Extension\Core\Type\FormType; // Enable honeypot on a form $builder = $this->createFormBuilder([], ['honeypot' => true]); $form = $builder->getForm();
Customizing Options
You can customize the honeypot field name and error message:
$form = $this->createFormBuilder([], [ 'honeypot' => true, 'honeypot_field_name' => 'website', 'honeypot_message' => 'Spam detected!', ])->getForm();
Features
Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
honeypot |
bool |
false |
Enable/disable honeypot |
honeypot_field_name |
string |
'website' |
Name of the honeypot field |
honeypot_message |
string |
'This form should not be submitted by bots.' |
Error message on bot detection |
How It Works
- Adds a hidden text field (e.g.
website) withclass="hidden",tabindex="-1",autocomplete="off" - On
PRE_SUBMIT, checks if field is filled - If filled, logs IP/User-Agent and throws
InvalidArgumentExceptionwith custom message - Legitimate users ignore the field
Twig Template
Uses fields.html.twig for rendering the honeypot field.
Testing
Run the test suite for HoneyPot:
# Run all HoneyPot tests bin/unit Valksor/Component/FormType/HoneyPot # Run tests with coverage vendor/bin/phpunit src/Valksor/Component/FormType/HoneyPot --coverage-text
Contributing
Contributions are welcome!
- Code style requirements (PSR-12)
- Testing requirements for PRs
- One feature per pull request
- Development setup instructions
To contribute to HoneyPot:
- Fork the repository
- Create a feature branch (
git checkout -b feature/honeypot-improvement) - Implement your changes following existing patterns
- Add comprehensive tests
- Ensure all tests pass and code style is correct
- Submit a pull request
Security
If you discover any security-related issues, please email us at packages@valksor.com instead of using the issue tracker.
Support
- Documentation: Full documentation
- Issues: GitHub Issues for bug reports and feature requests
- Discussions: GitHub Discussions for questions and community support
Credits
- Original Author - Creator and maintainer
- All Contributors - Thank you to all who contributed
- Symfony Form - Form component foundation
- Valksor Project - Part of the larger Valksor PHP ecosystem
License
This package is licensed under the BSD-3-Clause License.
About Valksor
This package is part of the valksor/php-valksor project - a comprehensive PHP library and Symfony bundle that provides a collection of utilities, components, and integrations for Symfony applications.
The main project includes:
- Various utility functions and components
- Doctrine ORM tools and extensions
- Symfony bundle for easy configuration
- And much more
If you find this HoneyPot component useful, you might want to check out the full Valksor project for additional tools and utilities that can enhance your Symfony application development.
To install the complete package:
composer require valksor/php-valksor