no captcha
v3.6.0
對於 Laravel 4,請使用 v1 分支。
composer require anhskohbo/no-captcha
注意此套件支援 Laravel 5.5 及更高版本的自動發現功能,因此如果您使用 Laravel 5.5 及更高版本,請跳過這些Setup說明。
在app/config/app.php中加入以下內容:
1- 服務提供者到提供者陣列:
AnhskohboNoCaptchaNoCaptchaServiceProvider::類,
2- 別名數組的類別名稱:
'NoCaptcha' => AnhskohboNoCaptchaFacadesNoCaptcha::class,
3-發布設定檔
php artisan vendor:publish --provider="AnhskohboNoCaptchaNoCaptchaServiceProvider"在.env檔中新增NOCAPTCHA_SECRET和NOCAPTCHA_SITEKEY :
NOCAPTCHA_SECRET=secret-key NOCAPTCHA_SITEKEY=site-key
(您可以從這裡獲取它們)
使用預設選項:
{!! NoCaptcha::renderJs() !!}具有語言支援或 onloadCallback 選項:
{!! NoCaptcha::renderJs('fr', true, 'recaptchaCallback') !!}預設小工具:
{!! NoCaptcha::display() !!}使用自訂屬性(主題、大小、回呼...):
{!! NoCaptcha::display(['data-theme' => 'dark']) !!}使用提交按鈕的不可見 reCAPTCHA:
{!! NoCaptcha::displaySubmit('my-form-id', '立即提交!', ['data-theme' => 'dark']) !!}請注意,此方法中需要表單的 ID,以便自動產生的回呼在成功驗證碼驗證後提交表單。
將'g-recaptcha-response' => 'required|captcha'加入規則數組:
$validate = Validator::make(Input::all(), [ 'g-recaptcha-response' => 'required|captcha']);
將以下值新增至validation語言檔案中的custom陣列:
'custom' => ['g-recaptcha-response' => ['required' => '請驗證您不是機器人。稍後重試或聯絡網站管理員。
],
],然後檢查Form中的驗證碼錯誤:
@if ($errors->has('g-recaptcha-response'))
<span class="help-block">
<strong>{{ $errors->first('g-recaptcha-response') }}</strong>
</span>
@endif使用 Laravel 測試功能時,您需要模擬驗證碼表單元素的回應。
因此,對於任何涉及驗證碼的表單測試,您可以透過模擬外觀行為來完成此操作:
// 防止 captchaNoCaptcha::shouldReceive('verifyResponse') 出現驗證錯誤
->一次()
->andReturn(true);// 為您的「必要」驗證提供隱藏輸入NoCaptcha::shouldReceive('display')
->zeroOrMoreTimes()
->andReturn('<input type="hidden" name="g-recaptcha-response" value="1" />');然後您可以像平常一樣測試表格的其餘部分。
使用 HTTP 測試時,您可以將g-recaptcha-response新增至請求正文以進行「必要」驗證:
// 防止 captchaNoCaptcha::shouldReceive('verifyResponse') 出現驗證錯誤
->一次()
->andReturn(true);// POST 請求,請求正文包含 g-recaptcha-response$response = $this->json('POST', '/register', ['g-recaptcha-response' => ' 1 ','姓名'=>'約翰','電子郵件'=>'[email protected]','密碼'=>'123456','password_confirmation'=>'123456',
]);結帳範例如下:
<?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();
}?><表單操作=“?” method="POST"><?php echo $captcha->display(); ?><button type="submit">提交</button>
</form><?php echo $captcha->renderJs(); ?>https://github.com/anhskohbo/no-captcha/pulls