Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- if($resposta){
- ?>
- <p>Conteúdo 01 (quero que isso seja mostrado na pagina somente depois que passar pelo reCAPTCHA do Google)</p>
- <?php
- }
- ?>
- <?php
- if (isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])) {
- $captcha_data = $_POST['g-recaptcha-response'];
- $chave_secreta = "CHAVE_SECRETA";
- $resposta = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$chave_secreta&response=$captcha_data&remoteip=".$_SERVER['REMOTE_ADDR']);
- }
- ?>
- <script src='https://www.google.com/recaptcha/api.js'></script>
- <form method="post" onsubmit="return validar()">
- <div class="g-recaptcha" data-callback="recaptchaCallback" data-sitekey="6Le61R0UAAAAABI62k_8UxNByFCwyETBJkdSLzv9"></div>
- <br>
- <button type="submit">Validar</button>
- </form>
- <script>
- googlerecpchk = false;
- function recaptchaCallback() {
- googlerecpchk = true;
- };
- function validar(){
- if(!googlerecpchk){
- alert("reCaptcha inválido!");
- return false;
- }
- }
- </script>
- <?php
- /* Sua chave secreta do Google reCaptcha */
- define('RECAPTCHA_SECRET', 'Your-Secret');
- /*
- * Adiciona ações para captura via AJAX
- * Para acessa-las basta enviar uma requisição
- * para https://www.YOUR-SITE.com/wp-admin/admin-ajax.php?aciton=nome-da-acao
- */
- add_action('wp_ajax_carrega_post', 'carrega_post');
- add_action('wp_ajax_nopriv_carrega_post', 'carrega_post');
- /*
- * Função responsável por verificar o response do capcha
- * E liberar o conteúdo do POST
- */
- function carrega_post() {
- /* Cria um contexto do tipo HTTP POST com o valor do response */
- $context = stream_context_create([
- 'http' => [
- 'method' => 'POST',
- 'content' => http_build_query([
- 'secret' => RECAPTCHA_SECRET,
- 'response' => filter_input(INPUT_POST, 'response', FILTER_SANITIZE_STRING),
- ])
- ]
- ]);
- /* Faz uma requisição do tipo POST para o servidor da Google */
- $result = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify", FILE_BINARY, $context));
- /* Verifica se o valor do captcha é válido */
- if ( $result->success ) {
- /*
- * Aqui você pode fazer sua regra de
- * negócio para capturar o que
- * você deseja
- */
- $post = (new WP_Query( intval($_POST['postID']) ))->posts[0];
- echo "Conteúdo do post "{$post->post_title}" liberado";
- wp_die();
- }
- }
- <?php
- /**
- * Template test
- *
- * @author Valdeir Psr < http://www.valdeirpsr.com.br >
- * @version 1.0
- */
- get_header(); ?>
- <div id="g-recaptcha"></div>
- <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback"></script>
- <script>
- function onloadCallback() {
- /* Cria o captcha na DIV indicada */
- grecaptcha.render('g-recaptcha', {
- 'sitekey' : 'Your-Code',
- 'callback' : 'verificaCaptcha'
- });
- }
- /* Função responsável por receber o responseCode e fazer a requisição */
- function verificaCaptcha(response) {
- alert("Aguarde...");
- /* Cria um formulário */
- let form = new FormData();
- form.append("response", response);
- form.append("postID", "<?php the_ID(); ?>");
- /* Cria uma requisição no formato POST com os dados acima */
- let request = new Request("<?php echo home_url() ?>/wp-admin/admin-ajax.php?action=carrega_post", {
- method: "POST",
- body: form,
- cache: "no-cache"
- });
- /* Envia a conexão e retorna os dados */
- fetch(request)
- .then( response => {
- return response.text()
- } )
- .then( text => alert(text) );
- }
- </script>
- <?php get_footer();
- /* Função responsável por receber o responseCode e fazer a requisição */
- function verificaCaptcha(response) {
- alert("Aguarde...");
- /* Cria um formulário */
- let form = new FormData();
- form.append("response", response);
- form.append("postID", "<?php the_ID(); ?>");
- let xhr = new XMLHttpRequest();
- xhr.addEventListener("load", result => {
- alert( result.target.response )
- })
- xhr.open("POST", "<?php echo home_url() ?>/wp-admin/admin-ajax.php?action=carrega_post", true);
- xhr.send(form);
- }
Add Comment
Please, Sign In to add comment