Guest User

Untitled

a guest
Feb 25th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.14 KB | None | 0 0
  1. <?php
  2. if($resposta){
  3. ?>
  4. <p>Conteúdo 01 (quero que isso seja mostrado na pagina somente depois que passar pelo reCAPTCHA do Google)</p>
  5. <?php
  6. }
  7. ?>
  8.  
  9. <?php
  10. if (isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])) {
  11. $captcha_data = $_POST['g-recaptcha-response'];
  12. $chave_secreta = "CHAVE_SECRETA";
  13. $resposta = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$chave_secreta&response=$captcha_data&remoteip=".$_SERVER['REMOTE_ADDR']);
  14. }
  15. ?>
  16.  
  17. <script src='https://www.google.com/recaptcha/api.js'></script>
  18.  
  19. <form method="post" onsubmit="return validar()">
  20. <div class="g-recaptcha" data-callback="recaptchaCallback" data-sitekey="6Le61R0UAAAAABI62k_8UxNByFCwyETBJkdSLzv9"></div>
  21. <br>
  22. <button type="submit">Validar</button>
  23. </form>
  24.  
  25. <script>
  26. googlerecpchk = false;
  27. function recaptchaCallback() {
  28. googlerecpchk = true;
  29. };
  30.  
  31. function validar(){
  32.  
  33. if(!googlerecpchk){
  34. alert("reCaptcha inválido!");
  35. return false;
  36. }
  37.  
  38. }
  39. </script>
  40.  
  41. <?php
  42.  
  43. /* Sua chave secreta do Google reCaptcha */
  44. define('RECAPTCHA_SECRET', 'Your-Secret');
  45.  
  46. /*
  47. * Adiciona ações para captura via AJAX
  48. * Para acessa-las basta enviar uma requisição
  49. * para https://www.YOUR-SITE.com/wp-admin/admin-ajax.php?aciton=nome-da-acao
  50. */
  51. add_action('wp_ajax_carrega_post', 'carrega_post');
  52. add_action('wp_ajax_nopriv_carrega_post', 'carrega_post');
  53.  
  54. /*
  55. * Função responsável por verificar o response do capcha
  56. * E liberar o conteúdo do POST
  57. */
  58. function carrega_post() {
  59.  
  60. /* Cria um contexto do tipo HTTP POST com o valor do response */
  61. $context = stream_context_create([
  62. 'http' => [
  63. 'method' => 'POST',
  64. 'content' => http_build_query([
  65. 'secret' => RECAPTCHA_SECRET,
  66. 'response' => filter_input(INPUT_POST, 'response', FILTER_SANITIZE_STRING),
  67. ])
  68. ]
  69. ]);
  70.  
  71. /* Faz uma requisição do tipo POST para o servidor da Google */
  72. $result = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify", FILE_BINARY, $context));
  73.  
  74. /* Verifica se o valor do captcha é válido */
  75. if ( $result->success ) {
  76.  
  77. /*
  78. * Aqui você pode fazer sua regra de
  79. * negócio para capturar o que
  80. * você deseja
  81. */
  82.  
  83. $post = (new WP_Query( intval($_POST['postID']) ))->posts[0];
  84.  
  85. echo "Conteúdo do post "{$post->post_title}" liberado";
  86.  
  87. wp_die();
  88. }
  89. }
  90.  
  91. <?php
  92. /**
  93. * Template test
  94. *
  95. * @author Valdeir Psr < http://www.valdeirpsr.com.br >
  96. * @version 1.0
  97. */
  98.  
  99. get_header(); ?>
  100.  
  101. <div id="g-recaptcha"></div>
  102.  
  103. <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback"></script>
  104. <script>
  105. function onloadCallback() {
  106.  
  107. /* Cria o captcha na DIV indicada */
  108. grecaptcha.render('g-recaptcha', {
  109. 'sitekey' : 'Your-Code',
  110. 'callback' : 'verificaCaptcha'
  111. });
  112. }
  113.  
  114. /* Função responsável por receber o responseCode e fazer a requisição */
  115. function verificaCaptcha(response) {
  116.  
  117. alert("Aguarde...");
  118.  
  119. /* Cria um formulário */
  120. let form = new FormData();
  121. form.append("response", response);
  122. form.append("postID", "<?php the_ID(); ?>");
  123.  
  124. /* Cria uma requisição no formato POST com os dados acima */
  125. let request = new Request("<?php echo home_url() ?>/wp-admin/admin-ajax.php?action=carrega_post", {
  126. method: "POST",
  127. body: form,
  128. cache: "no-cache"
  129. });
  130.  
  131. /* Envia a conexão e retorna os dados */
  132. fetch(request)
  133. .then( response => {
  134. return response.text()
  135. } )
  136. .then( text => alert(text) );
  137. }
  138. </script>
  139.  
  140. <?php get_footer();
  141.  
  142. /* Função responsável por receber o responseCode e fazer a requisição */
  143. function verificaCaptcha(response) {
  144.  
  145. alert("Aguarde...");
  146.  
  147. /* Cria um formulário */
  148. let form = new FormData();
  149. form.append("response", response);
  150. form.append("postID", "<?php the_ID(); ?>");
  151.  
  152. let xhr = new XMLHttpRequest();
  153. xhr.addEventListener("load", result => {
  154. alert( result.target.response )
  155. })
  156. xhr.open("POST", "<?php echo home_url() ?>/wp-admin/admin-ajax.php?action=carrega_post", true);
  157. xhr.send(form);
  158. }
Add Comment
Please, Sign In to add comment