我在重新加载时遇到了一些问题。
我尝试使用php,javascript和ajax(没有jquery!)将我的旧网站之一重新制作并改造为单页网页。
一切都很好,但是重新开始。我使用以下方法。
index.php
包含“主框架”,目标div分配给HTTPRequest函数。
使用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\')">« 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?
或者单页是错误的方式?
答案 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')">« 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
}
}
?>