reCaptcha не отображается на моей странице - PullRequest
0 голосов
/ 01 мая 2018

У меня проблемы с загрузкой рекапчи.

Я пытаюсь переделать и модернизировать один из старых моего сайта на одностраничный с php, javascript и ajax (без jquery!).

Все еще хорошо, но резюме. Я использую следующий метод.

  1. index.php содержит "основной фрейм" и целевые элементы div для функции HTTPRequest.

  2. С помощью AJAX я загружаю шаблоны страниц PHP в основные целевые элементы div.

НО, когда мой файл шаблона PHP выглядит следующим образом, чтобы показать последнюю страницу регистрации с капчей:

<?php

$template = '

.../ some code sits here /...

<div class="w80">
    <div class="g-recaptcha" data-sitekey=".../ my sitekey sits here /..."></div>
</div>
<div class="flex-row fr-c mt50a">
    <button class="button btn-reg" onclick="switchPage(\'registration_page_2.php\')">&laquo; Back</button>
    <button class="button btn-reg" onclick="validatePage(\'registration_validate.php\')">Submit your registration</button>
</div>
';

echo $template;

и я загружаю его в один из моих div с, reCaptcha не было показано. Я пробовал некоторые способы и приемы, но это не работает.

На моей странице вообще нет формы и раздела отправки. Я делаю это с помощью JavaScript и AJAX.

Почему я не могу заставить это работать?
Можно ли обойти метод form-> submit-> post, чтобы получить reCaptcha живым?
Или эта страница неверна?

Ответы [ 3 ]

0 голосов
/ 01 мая 2018

обновить блок капчи с добавлением идентификатора recaptcha

<div class="g-recaptcha" id="recaptcha" data-sitekey=".../ my sitekey sits here /..."></div>

добавить следующий код на страницу загрузки

<script src='https://www.google.com/recaptcha/api.js?hl=en&render=explicit&onload=onReCaptchaLoad'></script>
<script type="text/javascript">
var recaptcha;
var onReCaptchaLoad = function(){
    recaptcha = grecaptcha.render('recaptcha',{
        'sitekey' : 'YOUR_RECAPTCHA_PUBLIC_KEY',
        'theme' : 'white'
    });
};
</script>
0 голосов
/ 01 мая 2018

Вы можете сделать это с php запросом

<?php
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])){
    $recaptcha = $_POST['g-recaptcha-response'];
    $recaptcha_secret = 'YOUR_RECAPTCHA_SECRET_KEY'
    $verify = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$recaptcha_secret}&response={$recaptcha}");
    $captcha_success = json_decode($verify);
    if($captcha_success->success){
        // success
    }else{
        // error
    }
}
?>
0 голосов
/ 01 мая 2018

Я не совсем вас понимаю, но так как я не могу оставить комментарий, я все равно попытаюсь ответить.

Вам не нужно использовать php для отображения html-кода, просто в случае, если вы не знали, вы можете сделать это следующим образом.

<?php
//php code
?>
<div class="w80">
    <div class="g-recaptcha" data-sitekey=".../ my sitekey sits here /..."></div>
</div>
<div class="flex-row fr-c mt50a">
    <button class="button btn-reg" onclick="switchPage('registration_page_2.php')">&laquo; Back</button>
    <button class="button btn-reg" onclick="validatePage('registration_validate.php')">Submit your registration</button>
</div>
<?php //continue code here ?>

и я загружаю его в один из моих div, reCaptcha не было показано. я пробовал некоторые способы и приемы, но это не работает: (

Трудно сказать по предоставленной вами информации, почему она не отображается

На моей странице вообще нет формы и раздела для отправки. Я делаю это с javascript и ajax.

Если ваши registration_page_2.php и registration_validate.php не отражают шаблон в вашем текущем показанном .php, то он точно не будет отображаться на вашей странице

Почему я не могу заставить это работать? Это возможно обойти form-> submit-> post метод для получения reCaptcha живым? Или это единственная страница неправильный путь?

Я думаю, что вы просто сделали что-то не так в середине. То, как вы сказали «form-> submit-> post», - правильный путь для этого

Можете ли вы помочь мне получить решение, пожалуйста?

Используя ваш браузер, проверьте или просмотрите исходный код вашей страницы. (Для Google Chrome горячая клавиша - CTRL + SHIFT + I). Попробуйте найти элементы на своей странице, чтобы увидеть, загружены ли они, но скрыты ли они из-за CSS или лайков. После чего вы должны дать более подробную информацию.

...