SilentShield is an invisible, GDPR-compliant CAPTCHA alternative for PHP applications. You add a client script to your forms and verify each submission server-side with a single HTTP call and one API key — nothing to install, nothing to keep updated. There are no cookies, no tracking and no personal data, and hosting is EU-only by default.
Invisible CAPTCHA for PHP
One API key and a few lines of PHP — no package, no dependency. Works in Laravel, Symfony or plain PHP. Invisible, GDPR-compliant, integrated in minutes.

PHP Developer Features
Code examples
Requirements
# No package, no dependency.
# PHP 8.1 or newer with the cURL extension — that is all.
php -m | grep curlFrontend embed
<!-- Add to <head> with SRI for security -->
(function () {
var KEY = "YOUR_API_KEY";
var SITE = location.hostname;
var V = "2025.09.1";
var s = document.createElement('script');
s.src = "https://api.silentshield.io/client.js?k=" + encodeURIComponent(KEY)
+ "&v=" + encodeURIComponent(V)
+ "&site=" + encodeURIComponent(SITE);
s.async = true;
s.crossOrigin = "anonymous";
document.head.appendChild(s);
})();Backend verification
<?php
$api_key = "YOUR_API_KEY";
$nonce = $_POST['behavior_nonce'] ?? ''; // hidden input injected by client.js
$payload = json_encode(['nonce' => $nonce]);
$ch = curl_init("https://api.silentshield.io/v1/verify");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"api-key: " . $api_key,
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($http_code !== 200) {
error_log("SilentShield API error: " . $http_code);
// Fail secure: reject on API errors
exit(json_encode(['error' => 'Verification failed']));
}
$data = json_decode($response, true);
$is_human = $data['ok'] && $data['verdict'] === 'human' && $data['confidence'] >= 0.7;
if (!$is_human) {
error_log("Bot detected. Nonce: " . ($data['requested_nonce'] ?? 'unknown'));
exit(json_encode(['error' => 'Bot detected']));
}How SilentShield works in PHP
SilentShield adds an invisible check to your PHP forms and verifies each submission on the server. The client script runs in the background while the visitor fills in the form, and the generated token is sent with the request. Your PHP backend confirms the token before processing, so real users are never shown a puzzle.
One call, one API key
Verification is a single POST to https://api.silentshield.io/api/v1/captcha/verify-nonce with your key in the X-Api-Key header. Read ok from the response and reject the submission when it is false. The same five lines work in plain PHP as in Laravel or Symfony — there is nothing framework-specific about an HTTP request.
Setup walkthrough
Add the SilentShield client script https://api.silentshield.io/client.js?k=YOUR_API_KEY to your form and copy your API key from the dashboard. On submit, read the token from the request, create a SilentShield\Client and call verify. When the check passes, process the form; otherwise return a 403 response and reject the submission.
Privacy and accessibility by default
SilentShield uses no cookies, no tracking and no personal data, which keeps your PHP forms aligned with the GDPR. All verification runs on EU-only infrastructure by default. Because there are no image or audio puzzles, the protection meets WCAG 2.1 AA and stays accessible to keyboard and screen-reader users.