[JQUERY] 구글 reCAPTCHA를 어떻게 요구하려면?
JQUERY구글 reCAPTCHA를 어떻게 요구하려면?
해결법
-
1.당신은 reCAPTCHA를 응답 전화 등을 확인 사용해야합니다. 이런 식으로 뭔가 : <스크립트 SRC = 'HTTPS : //www.google.com/recaptcha/api.js 온로드 = reCaptchaCallback 및 렌더링 = 명시 적으로'> script>
당신은 reCAPTCHA를 응답 전화 등을 확인 사용해야합니다. 이런 식으로 뭔가 : <스크립트 SRC = 'HTTPS : //www.google.com/recaptcha/api.js 온로드 = reCaptchaCallback 및 렌더링 = 명시 적으로'> script>
var RC2KEY = 'sitekey', doSubmit = false; function reCaptchaVerify(response) { if (response === document.querySelector('.g-recaptcha-response').value) { doSubmit = true; } } function reCaptchaExpired () { /* do something when it expires */ } function reCaptchaCallback () { /* this must be in the global scope for google to get access */ grecaptcha.render('id', { 'sitekey': RC2KEY, 'callback': reCaptchaVerify, 'expired-callback': reCaptchaExpired }); } document.forms['form-name'].addEventListener('submit',function(e){ if (doSubmit) { /* submit form or do something else */ } })
-
2.ParsleyJS 위해 당신은 약간의 해결 방법을 수행하는 것입니다 :
ParsleyJS 위해 당신은 약간의 해결 방법을 수행하는 것입니다 :
1.Add 숨겨진 입력 필드, 데이터 파슬리 필수로 = "참"값 = ""이 같은
<input id="myField" data-parsley-errors-container="#errorContainer" data-parsley-required="true" value="" type="text" style="display:none;">
2.Add 오류 용기 (바로 아래 또는 g-reCAPTCHA를 div에 아래)
<span id='errorContainer'></span>
당신의 JS 코드에서이 간단한 기능 어딘가를 3.Add :
function recaptchaCallback() { document.getElementById('myField').value = 'nonEmpty'; }
커스텀 기능의 값을 갖는 속성 데이터 콜백 4.Add :
<div class="g-recaptcha" data-sitekey="***" data-callback="recaptchaCallback"></div>
-
3.현재 다른 작업 예를 찾을 수 있습니다 https://codepen.io/reactionmedia/pen/JVdmbB
현재 다른 작업 예를 찾을 수 있습니다 https://codepen.io/reactionmedia/pen/JVdmbB
이 예를 들어 나는 형태로 내부에 두 개의 HTML 요소를 만들려고하고있다 :
<div id="botvalidator"></div> <div id="captchaerrors"></div>
botvalidator은 "나는 아니다 로봇"체크 박스 내부와 구글의 reCAPTCHA를은 iframe이 포함됩니다. 해당 사용자를 확인하는 것은은 "나는 로봇이 아니다"체크 박스를 클릭하지 후 captchaerrors 오류가 포함됩니다.
중요 : 검증 삽입하기 전에 DOM 새로운 노드가 더 이상 유효하지 않기 때문에 구글의 reCAPTCHA를가 DOM에 새로운 g-reCAPTCHA를 응답 텍스트 영역 요소를 추가하지 않을 경우 알기 위해 우리는 arrive.js 라이브러리를 사용하고 있습니다. reCAPTCHA를 몇 분의 페이지에로드 된 후이 이벤트가 발생합니다.
당신은 arrive.js 라이브러리에서 다운로드 할 수 있습니다 : https://github.com/uzairfarooq/arrive/
또는 예를 들어, CDN 업체에서 직접 삽입 : https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.min.js
피할 오류에 jQuery 라이브러리를로드 한 후 모든 라이브러리를 삽입해야합니다. 나는 JQuery와 2.2.4 버전을 사용하고 있습니다
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
또 다른 중요한 점은 "수동"reCAPTCHA를을 로딩 reCAPTCHA를 한 후 onloadCallback 기능을 실행하고 렌더링하기 위해, 이런 식으로 로딩 reCAPTCHA를 라이브러리를 기억하는 것입니다
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"></script>
여기에 코드입니다 :
VAR onloadCallback = 함수 () { / ** * 우리가로드 페이지로하려고하면 우리가 부하 reCAPTCHA를 할 필요가 없습니다 축하 메시지를 표시합니다. * / 경우 ($ ( "#의 botvalidator"). 길이> 0) { grecaptcha.render ( 'botvalidator', { 'sitekey': '6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI' '콜백'cleanErrors를 }); addCaptchaValidation (); / ** * 우리는 새로운 구글의 reCAPTCHA를을 확인하기 위해 라이브러리에 도착 사용하려고 * 현재 한 이후에 추가 요소가 만료 된 후 우리는 그 요소에 대한 새로운 속성을 생성합니다. 만료 - 콜백 구글의 reCAPTCHA를가 작동하지 *, 아마도 그것은 요소 생성하기 전에 실행됩니다. * https://github.com/uzairfarooq/arrive/ * / $ (문서) .arrive ( "# g-reCAPTCHA를 응답"함수 () { // '이'새로 만든 요소를 참조 addCaptchaValidation (); }); } }; / ** 우리는 컨테이너에서 모든 오류를 제거하는 것입니다. * / VAR의 cleanErrors = 함수 () { $ ( "#의 captchaerrors") 비어 ().; }; VAR addCaptchaValidation = 함수 () { ( "보안 문자 유효성 검사를 추가") CONSOLE.LOG; cleanErrors (); $ ( '# myForm을') 파슬리 () (파괴)..; $ ( '# g-reCAPTCHA를 응답') ATTR ( '필요', TRUE).; // 우리는 파슬리에 새로운 유효성 검사기를 만들려고하고있다 $ ( '# g-reCAPTCHA를 응답') ATTR ( '데이터 파슬리 - 보안 문자 - 검증', TRUE).; $ ( '# g-reCAPTCHA를 응답') ATTR ( '데이터 파슬리 오류 메시지', "우리는 그것을 알고 있지만, 우리는 당신이 로봇되지 않습니다 감사합니다 확인을해야합니다..."); $ ( '# g-reCAPTCHA를 응답') ATTR ( '데이터 파슬리 - 에러 - 용기 ","#captchaerrors. "); $ ( '# myForm을') 파슬리 ().; }; / ** 우리는 새로운 파슬리 검사기를 추가 할 예정이 유효성 검사에서 호출 # g-reCAPTCHA를 응답 제출 버튼을 클릭 한 후 * / window.Parsley.addValidator ( 'captchaValidation', { validateString : 함수 (값) { 경우 (디버그)을 console.log ( "보안 문자 검증", 값); 경우 (value.length> 0) { true를 반환; } 다른 { false를 반환; } }, 메시지 : {EN : '우리는 그것을 알고 있지만, 우리는 당신이 로봇 없습니다 확인을해야합니다. 감사.'} });
head>파슬리 구글 reCAPTCHA를 실시 예 H1> <형태 ID = "myForm을"> 이름
div>div>
FORM> <스크립트 SRC = "https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"> script> <스크립트 SRC = "https://cdnjs.cloudflare.com/ajax/libs/parsley.js/2.8.2/parsley.min.js"> script> <스크립트 SRC = "https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.min.js"> script> <스크립트 SRC = "https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"> script> body> HTML>즉 모든 사람들입니다.
4.규칙 만들기 https://laravel.com/docs/5.7/validation#custom-validation-rules
규칙 만들기 https://laravel.com/docs/5.7/validation#custom-validation-rules
그런 다음 컨트롤러에서 사용
// validation $this->validate( $request, array( 'g_recaptcha_response' => ['required', 'string', new Captcha()] ));
from https://stackoverflow.com/questions/29612879/google-recaptcha-how-to-make-required by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 데이터가로드 된 후 어떻게있는 jqGrid의 열 너비를 조정하려면? (0) 2020.10.23 [JQUERY] 대신 토글`어떻게 사용하는 (...)`> 1.8 jQuery를에? (0) 2020.10.23 [JQUERY] jQuery를 UI "$ ("#의 날짜 선택기 "). 날짜 선택기 기능은 아니다" (0) 2020.10.23 [JQUERY] 지연, 10 초 동안-팝업 번만 팝업 (0) 2020.10.23 [JQUERY] 있는 jqGrid, 어떻게하지만 (인라인) 편집 중 추가 대화 상자에서 열 편집을 만들려면 (0) 2020.10.23