在哪里处理 reCAPTCHA?在 JavaScript 中还是在 PHP 中?
Posted
技术标签:
【中文标题】在哪里处理 reCAPTCHA?在 JavaScript 中还是在 PHP 中?【英文标题】:Where to handle reCAPTCHA? In JavaScript or in PHP? 【发布时间】:2019-02-18 07:42:23 【问题描述】:我在 Web 开发方面的经验几乎为零,但我找到了一个带有 reCAPTCHA 的联系表单的simple example,并试图弄清楚如何让它在我的 WordPress 网站上运行。有live demo。
是否可以在 index.js 中以检查验证码、异步发送表单数据并处理响应的方式实现“提交”功能?
new Vue(
// root node
el: "#app",
// the instance state
//...
methods:
// submit form handler
submit: function()
this.submitted = true;
,
//..
);
如果是,可以在服务器端有一个 php 脚本来处理请求,调用 mail(...) 并返回“OK”,但不清楚在这种情况下如何检查验证码?谁来检查它,javascript 还是 PHP?
【问题讨论】:
每当我使用recaptcha 时,我总是同时使用JS 和PHP。 JS 在客户端进行验证,但无需使用 PHP 进行服务器端检查即可绕过。可能有一种方法可以在没有 PHP 方面的情况下更安全地实现它,但我不知道如何做到这一点。 @FergalAndrews 应该使用什么提交函数将验证码结果发送到 PHP? 我已经在 Alexey 下面发布了一个答案 这里是实现webdesign.tutsplus.com/tutorials/…的页面 【参考方案1】:这是我使用的类方法。参数 ($gRecaptchaResponse) 是 google 在您使用 javascript 提交验证码时返回的内容
protected function validateGoogleRecaptcha($gRecaptchaResponse)
$secretKey = $this->config['application']['captcha']['recaptcha']['secretKey'];
$reCaptcha = new \ReCaptcha($secretKey);
$response = $reCaptcha->verifyResponse(
$_SERVER["REMOTE_ADDR"],
$gRecaptchaResponse
);
return $response;
【讨论】:
是否可以不重新加载页面? @Alexey - 我已将 recaptcha 与 ajax 表单提交一起使用。有几个网站提供说明。示例:developer.hyvor.com/php/…以上是关于在哪里处理 reCAPTCHA?在 JavaScript 中还是在 PHP 中?的主要内容,如果未能解决你的问题,请参考以下文章
如何在服务器端验证 Google reCAPTCHA v3?