Für Laravel 4 verwenden Sie den Zweig v1.
composer require anhskohbo/no-captcha
HINWEIS Dieses Paket unterstützt die automatische Erkennungsfunktion von Laravel 5.5 und höher. Überspringen Sie diese Setup
Anweisungen daher, wenn Sie Laravel 5.5 und höher verwenden.
Fügen Sie in app/config/app.php
Folgendes hinzu:
1- Der ServiceProvider zum Provider-Array:
AnhskohboNoCaptchaNoCaptchaServiceProvider::class,
2- Der Klassenalias für das Aliases-Array:
'NoCaptcha' => AnhskohboNoCaptchaFacadesNoCaptcha::class,
3- Veröffentlichen Sie die Konfigurationsdatei
php artisan vendor:publish --provider="AnhskohboNoCaptchaNoCaptchaServiceProvider"
Fügen Sie NOCAPTCHA_SECRET
und NOCAPTCHA_SITEKEY
in der .env- Datei hinzu:
NOCAPTCHA_SECRET=secret-key NOCAPTCHA_SITEKEY=site-key
(Sie können sie hier erhalten)
Mit Standardoptionen:
{!! NoCaptcha::renderJs() !!}
Mit Sprachunterstützung oder onloadCallback-Option:
{!! NoCaptcha::renderJs('fr', true, 'recaptchaCallback') !!}
Standard-Widget:
{!! NoCaptcha::display() !!}
Mit benutzerdefinierten Attributen (Thema, Größe, Rückruf ...):
{!! NoCaptcha::display(['data-theme' => 'dark']) !!}
Unsichtbares reCAPTCHA über einen Absenden-Button:
{!! NoCaptcha::displaySubmit('my-form-id', 'submit now!', ['data-theme' => 'dark']) !!}
Beachten Sie, dass bei dieser Methode die ID des Formulars erforderlich ist, damit der automatisch generierte Rückruf das Formular bei einer erfolgreichen Captcha-Überprüfung senden kann.
Fügen Sie 'g-recaptcha-response' => 'required|captcha'
zum Regelarray hinzu:
$validate = Validator::make(Input::all(), [ 'g-recaptcha-response' => 'required|captcha']);
Fügen Sie dem custom
Array in der validation
die folgenden Werte hinzu:
'custom' => ['g-recaptcha-response' => ['required' => 'Bitte stellen Sie sicher, dass Sie kein Roboter sind.','captcha' => 'Captcha-Fehler! Versuchen Sie es später noch einmal oder wenden Sie sich an den Site-Administrator.', ], ],
Überprüfen Sie dann das Form
auf Captcha-Fehler:
@if ($errors->has('g-recaptcha-response')) <span class="help-block"> <strong>{{ $errors->first('g-recaptcha-response') }}</strong> </span> @endif
Wenn Sie die Laravel-Testfunktion verwenden, müssen Sie die Antwort für das Captcha-Formularelement nachahmen.
Für alle Formulartests, die das Captcha beinhalten, können Sie dies tun, indem Sie das Fassadenverhalten verspotten:
// Validierungsfehler bei captchaNoCaptcha::shouldReceive('verifyResponse') verhindern ->einmal() ->andReturn(true);// Bereitstellung versteckter Eingaben für Ihre „erforderliche“ ValidierungNoCaptcha::shouldReceive('display') ->zeroOrMoreTimes() ->andReturn('<input type="hidden" name="g-recaptcha-response" value="1" />');
Anschließend können Sie den Rest Ihres Formulars wie gewohnt testen.
Wenn Sie HTTP-Tests verwenden, können Sie die g-recaptcha-response
zum Anforderungstext für die „erforderliche“ Validierung hinzufügen:
// Validierungsfehler bei captchaNoCaptcha::shouldReceive('verifyResponse') verhindern ->einmal() ->andReturn(true);// POST-Anfrage, mit Anfragetext einschließlich g-recaptcha-response$response = $this->json('POST', '/register', ['g-recaptcha-response' => ' 1','name' => 'John','email' => '[email protected]','password' => '123456','password_confirmation' => '123456', ]);
Checkout-Beispiel unten:
<?phprequire_once "vendor/autoload.php";$secret = 'CAPTCHA-SECRET';$sitekey = 'CAPTCHA-SITEKEY';$captcha = new AnhskohboNoCaptchaNoCaptcha($secret, $sitekey);if (! empty($_POST) ) {var_dump($captcha->verifyResponse($_POST['g-recaptcha-response']));exit(); }?><form action="?" method="POST"><?php echo $captcha->display(); ?><button type="submit">Senden</button> </form><?php echo $captcha->renderJs(); ?>
https://github.com/anhskohbo/no-captcha/pulls