reCaptcha没有在我的单页网站上显示

时间:2018-05-01 07:03:20

标签: javascript php html ajax recaptcha

我在重新加载时遇到了一些问题。

我尝试使用php,javascript和ajax(没有jquery!)将我的旧网站之一重新制作并改造为单页网页。

一切都很好,但是重新开始。我使用以下方法。

  1. index.php包含“主框架”,目标div分配给HTTPRequest函数。

  2. 使用AJAX,我将PHP页面模板加载到主目标div。

  3. 但是,当我的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-&gt; submit-&gt; post方法来获取reCaptcha?
    或者单页是错误的方式?

3 个答案:

答案 0 :(得分:0)

我不太了解你,但由于我无法发表评论,无论如何我都会尝试回答。

您不必使用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-&gt; submit-&gt; post方法让reCaptcha活着?或者是单页   错误的方式?

我认为你中间做错了。你说的方式是'form-&gt; submit-&gt; post'是正确的方法

  

你能帮我解决一下这个问题吗?

使用浏览器检查或查看页面的源代码。 (对于谷歌浏览器,热键是CTRL + SHIFT + I)尝试查找页面中的元素以查看它们是否已加载,但由于css或类似隐藏。之后,你应该提供更多细节。

答案 1 :(得分:0)

通过添加ID 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>

答案 2 :(得分:0)

您可以使用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
    }
}
?>