我们有一个 PHP 表单,它在 reCaptcha 上有几个选项卡和超时。一切都在一页中完成,如果表格在 <3 分钟内完成,它就可以正常工作。
一个解决方案的想法是将表单处理和 reCaptcha 移动到辅助页面进行处理。
问题是表单页面轮询谷歌服务以获取 reCaptcha 并将令牌值收集到隐藏字段。
<input type="hidden" name="recaptcha_response" id="recaptchaResponse">
Run Code Online (Sandbox Code Playgroud)
问题是如何在服务端处理页面请求这个token?这是客户端表单页面上使用的代码。我需要以某种方式重新生成要应用的令牌值:
$recaptcha_response
这是表单页面上的工作版本。从表单页面删除对发布令牌的要求很容易,只是不确定如何重新生成令牌以在服务器端页面上使用。
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['recaptcha_response'])) {
// Build POST request:
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
$recaptcha_secret = RECAPTCHA_SECRET_KEY;
$recaptcha_response = $_POST['recaptcha_response'];
$remoteip = $_SERVER['REMOTE_ADDR'];
// Make and decode POST request:
$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response. '&remoteip='.$remoteip);
$recaptcha = json_decode($recaptcha);
// Take action based on the score returned:
if ($recaptcha->score >= 0.5) {
Run Code Online (Sandbox Code Playgroud)
编辑添加:将重新验证码的初始化直到提交延迟计时问题,因为这似乎是一个选项:
https://developers.google.com/recaptcha/docs/v3
“2. …
我有一个XML流解析为SimpleXMLElement对象,我试图迭代可用的记录,用作PHP页面中的值.
[listing]的父节点当前存在两次,因为测试XML中有两条记录(列出[0]和列表[1])但是我不能让它像PHP中的"Basic SimpleXML用法"所示那样工作手册
<?php
$xml = simplexml_load_file('http://feed.postlets.com/Burndog/6458ec1af54f632');
Run Code Online (Sandbox Code Playgroud)
这可以提供第一个列表标题元素值:
$value1 = $xml->listing[0]->title;
echo ' here:' . $value1;
Run Code Online (Sandbox Code Playgroud)
这无法遍历可用值:
foreach ($xml->listing->title as $title) {
echo $title;
}
?>
Run Code Online (Sandbox Code Playgroud)
print_r中的值:
SimpleXMLElement Object
(
[listing] => Array
(
[0] => SimpleXMLElement Object
(
[url] => http://www.postlets.com/repb/6509636
[title] => 3BR/2BA Manufactured - Beaumont
[subtitle] => SimpleXMLElement Object
(
)
[description] => SimpleXMLElement Object
(
)
[location] => SimpleXMLElement Object
(
[street] => 1415 E 6th St
[city] => Beaumont
[zipcode] => 92223
[state] => CA …Run Code Online (Sandbox Code Playgroud) 我正在尝试检查$ _GET值是否可用且等于1,但错误是索引未定义.
<?php if ((isset($_GET['success'])) || ($_GET['success'] == 1)) { ?>
Do Something
<?php } ?>
Run Code Online (Sandbox Code Playgroud)
为什么这是个问题?我正在检查它是否存在然后是否等于一个,如果是,则做一些事情.
有没有更好的方法来实现这一目标?
在以下MySQL查询中,我能够生成Sum值,但无法分配可用于在PHP页面中回显的值.
SELECT
invoices.InvoiceNo AS Invoice,
invoices.invDate AS DATE,
invoices.invValue AS Amount,
(
SELECT SUM(invoices.invValue) AS GrandTotal
FROM invoices
WHERE invoices.fKey = 186 AND inv_openClosed = 0
)
FROM invoices
WHERE invoices.fKey = 186 AND inv_openClosed = 0
ORDER BY Invoice DESC
Run Code Online (Sandbox Code Playgroud)
测试显示结果但"GrandTotal"的别名不起作用.并且MySQL没有错误来寻求解决方案.