بالنسبة إلى Laravel 4، استخدم فرع v1.
composer require anhskohbo/no-captcha
ملاحظة: تدعم هذه الحزمة ميزة الاكتشاف التلقائي في Laravel 5.5 والإصدارات الأحدث، لذا قم بتخطي تعليمات Setup
هذه إذا كنت تستخدم Laravel 5.5 والإصدارات الأحدث.
في app/config/app.php
أضف ما يلي:
1- مقدم الخدمة إلى مجموعة مقدمي الخدمة :
AnhskohboNoCaptchaNoCaptchaServiceProvider::class,
2- الاسم المستعار للفئة لمصفوفة الأسماء المستعارة :
'NoCaptcha' => AnhskohboNoCaptchaFacadesNoCaptcha::class,
3- نشر ملف التكوين
php artisan vendor:publish --provider="AnhskohboNoCaptchaNoCaptchaServiceProvider"
أضف NOCAPTCHA_SECRET
و NOCAPTCHA_SITEKEY
في ملف .env :
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', 'submit now!', ['data-theme' => 'dark']) !!}
لاحظ أن معرف النموذج مطلوب في هذه الطريقة للسماح لرد الاتصال الذي تم إنشاؤه تلقائيًا بإرسال النموذج إلى التحقق الناجح من كلمة التحقق.
أضف 'g-recaptcha-response' => 'required|captcha'
إلى مجموعة القواعد:
$validate = Validator::make(Input::all(), [ 'g-recaptcha-response' => 'required|captcha']);
أضف القيم التالية إلى المصفوفة custom
في ملف لغة validation
:
'custom' => ['g-recaptcha-response' => ['required' => 'يُرجى التحقق من أنك لست روبوتًا.','captcha' => 'خطأ في اختبار Captcha! حاول مرة أخرى لاحقًا أو اتصل بمسؤول الموقع.', ]، ]،
ثم تحقق من وجود أخطاء captcha في Form
:
@if ($errors->has('g-recaptcha-response')) <span class="help-block"> <strong>{{ $errors->first('g-recaptcha-response') }}</strong> </span> @endif
عند استخدام وظيفة Laravel Testing، ستحتاج إلى محاكاة الاستجابة لعنصر نموذج captcha.
لذا، بالنسبة لأي اختبار يتضمن اختبار CAPTCHA، يمكنك القيام بذلك عن طريق السخرية من سلوك الواجهة:
// منع خطأ التحقق من الصحة في 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 (! فارغ($_POST) ) {var_dump($captcha->verifyResponse($_POST['g-recaptcha-response']));exit(); }?><form action="؟" method="POST"><?php echo $captcha->display(); ?><button type="submit">إرسال</button> </form><?php echo $captcha->renderJs(); ?>
https://github.com/anhskohbo/no-captcha/pulls