=== EDZNET Honeypot & Timing Guard ===
Contributors: edznet
Donate link: https://edznet.dev/
Tags: contact form 7, cf7, honeypot, spam, timing guard
Requires at least: 5.6
Tested up to: 7.1
Requires PHP: 7.2
Stable tag: 1.1.1
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Adds a hidden honeypot field, a minimum-submit-time check, and content gibberish detection to every Contact Form 7 form. No configuration needed.

== Description ==

EDZNET Honeypot & Timing Guard protects Contact Form 7 forms from bot submissions using three complementary techniques:

### Honeypot
A real text input is rendered off-screen (hidden via CSS positioning, not display:none). Bots that fill in visible form fields will often fill this one too, while human visitors never see it.

### Timing Guard
A signed timestamp is injected into each form. Submissions arriving faster than the configured minimum time (default: 3 seconds) are rejected as bots. The timestamp is HMAC-signed with your site's secret key, preventing tampering.

### Gibberish Content Detection
The plugin analyses every submitted field (except internal and honeypot fields) for random-looking content — long character strings without spaces, words mixing letters and digits, or vowel-less letter sequences. Bots that fill forms with random noise are caught here.

When spam is detected, CF7 silently drops the mail and logs the reason to its spam log.

No configuration required — just install and activate.

== Installation ==

1. Upload the `edznet-honeypot-timing-guard` folder to `/wp-content/plugins/`.
2. Activate the plugin through the Plugins screen in WordPress.
3. Contact Form 7 forms are now protected.

== Frequently Asked Questions ==

= Can I change the minimum submit time? =

Yes. Add this to your theme's `functions.php`:

`add_filter( 'edz_hp_min_seconds', fn() => 5 );`

= Can I require the timestamp field? =

By default, forms cached before the plugin was activated won't have a timestamp. Set the filter to `true` once your cache has rolled over:

`add_filter( 'edz_hp_require_timestamp', '__return_true' );`

== Changelog ==

= 1.1.1 =
* Bumped Tested up to: 7.1 for WordPress 7.1 compatibility. No functional changes.

= 1.1.0 =
* Added gibberish content detection: flags message/subject fields containing random-looking text (long random strings, mixed letters & digits, vowel-less sequences).
* Added `edz_hp_check_gibberish` filter to disable the gibberish check (`add_filter( 'edz_hp_check_gibberish', '__return_false' )`).
* Added `edz_hp_gibberish_fields` filter to customize which fields are checked.

= 1.0.0 =
* Initial release.
