Requirements:
- jQuery (if not it will automated added into pages)
if (typeof jQuery == 'undefined' || !window.jQuery) {
var hs = document.createElement('script');
hs.type = 'text/javascript';
hs.async = true;
hs.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js';
document.getElementsByTagName('head')[0].appendChild(hs);
document.getElementsByTagName('body')[0].appendChild(hs);
document.head.appendChild(hs);
document.body.appendChild(hs);
}
- Recaptcha Site Key And Secret (backend): Get Here
//Set site key as global variable
const g_site_key = 'YOUR_SITE_KEY';
- Main Code:
//loader
(function () {
submitDisable();
download_script('https://www.google.com/recaptcha/api.js?render='+g_site_key+'&render=explicit', function () {
grecaptcha.ready(function () {
gexec();
});
});
})();
//function callback
function gexec(){ //also refresh function
grecaptcha.execute(g_site_key, { action: 'homepage' }).then(function (token) {
recaptcha_insert_token(token); //insert element token into form
});
}
//function add recaptcha elements
function recaptcha_insert_token(token) {
if (typeof jQuery == 'undefined'){
console.log('JQuery Not Loaded');
} else {
var f = $('form'), fg = f.find('[name="g-recaptcha-response"]');
if (fg.length === 0){
$('<input type="hidden" readonly value="' + token + '" name="g-recaptcha-response">').appendTo(f);
} else {
fg.val(token);
}
}
}
Complete Code
HTML
<!--button refresh token (example)-->
<button class="btn-block btn" onclick="gexec()">Refresh</button>
Javascript
//load jQuery if not exists (automated)
if (typeof jQuery == 'undefined' || !window.jQuery) {
var hs = document.createElement('script');
hs.type = 'text/javascript';
hs.async = true;
hs.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js';
document.getElementsByTagName('head')[0].appendChild(hs);
document.getElementsByTagName('body')[0].appendChild(hs);
document.head.appendChild(hs);
document.body.appendChild(hs);
}
//set site key
const g_site_key = 'YOUR_SITE_KEY';
//loader
(function () {
submitDisable();
download_script('https://www.google.com/recaptcha/api.js?render='+g_site_key+'&render=explicit', function () {
grecaptcha.ready(function () {
gexec();
});
});
})();
//function callback
function gexec(){ //also refresh function
grecaptcha.execute(g_site_key, { action: 'homepage' }).then(function (token) {
recaptcha_insert_token(token); //insert element token into form
});
}
//function add recaptcha elements
function recaptcha_insert_token(token) {
if (typeof jQuery == 'undefined'){
console.log('JQuery Not Loaded');
} else {
var f = $('form'), fg = f.find('[name="g-recaptcha-response"]');
if (fg.length === 0){
$('<input type="hidden" readonly value="' + token + '" name="g-recaptcha-response">').appendTo(f);
} else {
fg.val(token);
}
}
}
PHP (backend)
<?php
function recaptcha_verify($secret)
{
if (isset($_POST['g-recaptcha-response'])) {
$response = $_POST['g-recaptcha-response'];
$remoteip = $this->getUIP();
$secret = $this->recaptcha_s;
$g_response = json_decode(file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . $secret . '&response=' . $response . '&remoteip=' . $remoteip), true);
if (isset($g_response['success']) && true === $g_response['success']) {
return true;
} else {
return false;
}
}
}
if (isset($_POST['login'])){ //example if you have post named login
if (recaptcha_verify('YOUR_SECRET_KEY_HERE') !== false){
/* Recaptcha Success */
} else {
/* Recaptcha Failed */
}
}
Full Example at Codepen
Comments
Post a Comment
Bila Ada posting yang kurang, atau error atau yang lainnya, silahkan tinggalkan komentar agar artikel/post di perbaiki.
Jangan Lupa Cek Box "Notify Me" agar tahu komentar kamu dibalas oleh saya.
If there are any posts that are missing, or error or anything else, please leave a comment for the article / post to be fixed.
Do not Forget Check Box "Notify Me" to know our comments replied by me.