【发布时间】:2021-07-04 00:02:50
【问题描述】:
我无法检查是否在 authController.php 中检查了 recaptcha。在signup.php页面中,用户提交表单时,表单方法为post,action = authController.php
我的注册页面在没有 recaptcha 的情况下工作得很好。假设我在 signup.php 上正确定义了 recaptcha div 以及有效的密钥,这样我就不必在这里放不相关的东西,我唯一的问题是如何在 authController.php 中检查 recaptha POST。现在发生的情况是,如果我检查或不检查recaptcha,当提交表单时,它会返回说recaptcha 是必需的。如果我将代码注释掉,那么显然注册是有效的。
提交注册表单后,即使成功,我也会返回注册表单,并将 REGISTER 按钮更改为绿色的 EMAIL SENT,并禁用按钮本身。话虽如此,我认为正在发生的事情是,当页面重新加载时,由于我使用的是 PHP,它会丢失复选标记。我怎么知道提交后,checked 不再检查,但我认为必须有一种使用 PURE php 的方法。那么如何First Name,Last name ...在提交后都被识别。现在有点沮丧。这是我如何检查是否在 authController.php 文件中检查了 recaptcha。
'''
if(empty($_POST['g-recaptcha-response']))
{
$errors[captcha_error'] = "Captcha is required";
}
else
{
$secretKey = "mykey";
$url = 'https://www.google.com/recaptcha/api/siteverify?secret='.$secretKey.'&response='.$_POST['g-recaptcha-response'];
$response = file_get_contents($url);
$response_data = json_decode($response);
if($response_data->success)
$errors['captcha_error'] = null;
}
'''
errors 是上面定义的数组,语法是正确的。在 signup.php 页面上,我检查错误数组 captcha_error 是 SET 还是 NULL。这就是我知道该框是否被选中的方式。如果我必须使用 $data 并成功使用 ajax,那么请如何。请记住我使用 PURE php 而没有 jquery 或 AJAX(尽管我认为我最终可能会使用它,因为 ajax 不会重新加载整个页面,因此我不会丢失复选标记,这可能是我的问题),但 PHP 是首选。谢谢
【问题讨论】:
-
需要在 javascript 中发生一些事情才能将 g-recaptcha-response 添加到表单中。