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