coercive/ghostfield

Coercive Security GhostField - Provides a multi-layered anti-bot protection system for HTML forms

0.0.0 2025-09-03 12:14 UTC

This package is auto-updated.

Last update: 2025-09-03 12:17:24 UTC


README

Provides a multi-layered anti-bot protection system for HTML forms

Get

composer require coercive/ghostfield

Basics

Common part (send/receipt)

use  Coercive\Security\GhostField\GhostField;

# Load class, set key
$GhostField = new GhostField('123456abcdef');

# Activate handshake JS (optional)
$GhostField->setSigil();

# Create honeypot fields (empty = automatic)
$GhostField->createFields();

# Add your regular fields
$GhostField->createFields([
    'email',
    'password',
]);

Send part

?>

<form method="post" action="/send" autocomplete="off"><?php

    # Auto add honeypot fields
    echo $GhostField->getHtmlHoneypots();

    # Add your regular fields bellow ?>
    <label>
        Email : 
        <input type="email" name="<?= $GhostField->getId('email') ?>" required />
    </label>
    <label>
        Password : 
        <input type="password" name="<?= $GhostField->getId('password') ?>" required />
    </label>
    <button type="submit">Send</button>

</form>

Receipt part

use  Coercive\Security\GhostField\GhostField;

if(!$GhostField->validate($_POST)) {
    echo 'Unallowed';
    die;
}

At the end of you , export the JS part

if($str = $GhostField->getHideJS()): ?>
    <script type="text/javascript"><?= $str ?></script><?php
endif;

Advanced

You can build your own JS/HTML by exporting fields (object)

use  Coercive\Security\GhostField\GhostField;

foreach ($GhostField->getFields() as $field): ?>
    <label id="<?= $field->getId() ?>">
        <?= $field->getName() ?>
        <input type="<?= $field->getType() ?>" name="<?= $field->getId() ?>" placeholder="<?= $field->getPlaceholder() ?>" />
    </label><?php
endforeach;