我想在 cloudflare Turntile 中重新生成新令牌。怎么办?

问题描述 投票:0回答:1

我已在联系表单中添加了 cloudflare Turntile。我想通过电子邮件发送身份验证码,身份验证后,我需要重新生成旋转门以确认身份验证,然后向我发送消息。有什么想法吗? Clodflare 说要调用

turnstile.reset(widgetId: string)
函数,但是该怎么做?

php file xampp
1个回答
-1
投票

正如许多人在评论中所说,您很可能超出了 xampp 堆栈配置中设置的一项或多项限制。您要么必须按照您提到的方式更改 php 设置,要么必须更新 Web 服务器设置(apache 或 nginx 设置)。您需要检查许多配置变体(列表不完整):

PHP 如何配置:

  • 如果是 FPM,您应该检查您的 PHP-FPM 配置
    • 检查并设置 Web 服务器和 PHP 进程之间的连接超时(因为有一个) - 它位于该特定站点的 nginx php-fpm 设置中
  • 如果 PHP 作为 Apache 模块加载,则配置完全不同(您需要检查 apache 配置或虚拟主机配置)
  • FastCGI 还有另一组配置(很可能是全局的,但也可能是特定于站点的)

如果您对不涉及修改技术堆栈配置的解决方案感兴趣,那么有一个:分块上传。

一次性上传大文件通常不是一个好主意。您应该考虑分块进行。如果用户必须等待 30 分钟左右才能完成上传并在最后一刻失败,会发生什么情况?虽然分块上传需要同样多的时间,但您将拥有更好的控制力和更多的机会来完成它。

与整体(一次)上传相比,它具有以下优势:

  • 可以实现容错:
    • 当某个块失败时,您不必重新上传整个文件,只需重新上传失败的块
    • 当一个块失败时,您可以默默地重复它,而不会打扰用户(非常优越的用户体验)
  • 可以使其适应服务器限制,例如最大帖子大小、内存限制和其他设置(可以设置块大小以适应这些限制),方便上传任何大小的文件。
  • 可以提供进度条(当块成功上传时更新)
  • 可以异步执行:
    • 可以委托给工作线程
    • 可以同时上传多个块(服务器端应该能够处理:当所有块都成功上传时,进行合并)

备注:

  • 这个答案不会包含代码,因为分块上传的实现并不简单。还有大量的库/实现可用。他们中的大多数都是固执己见,我让你选择最合适的(用谷歌搜索

    chunked uploads library with Javascript/PHP
    会给你很多结果)。

  • 这里提供了非常基础的知识,但这本身还不够。 AJAX/PHP - 使用纯 JavaScript 分段上传大文件。链接问题的答案不包含对失败块和其他错误的缓解措施,它只是显示了一般想法。


所以你需要做的是:

客户端:

  • 选择文件后,将其分成小块(约 500KB - 5MB 大小)
  • 浏览这些块并通过 AJAX/XMLHttpRequest 将它们一一发布
  • 如果任何请求失败,请重复上传相应块合理的次数(容错)
  • 一直这样做,直到你没有大块为止
  • 此处介绍的步骤不包括安全性(验证等),但永远不应该忘记这一点。

服务器端

  • 您的端点应该能够处理:
    • 上传开始/第一个块
    • 上传结束/最后一个块
    • 其余的块
  • 首先在某处(文件/数据库)创建一个清单,用于存储当前的上传状态:
    • 总块数,
    • 成功上传块(及其顺序),
    • 当前块
    • 该块属于哪个文件/上传会话(以防止与其他上传的块混合)
  • 最后 chunk 按正确的顺序连接块并将它们保存到文件中
  • 特定块上传成功后更新每个块的状态
  • 为任何失败提供正确的错误输出(如果任何块失败,您将不得不依赖错误信息。您可以向用户提供有意义的错误消息和/或您可以根据错误采取行动)
© www.soinside.com 2019 - 2024. All rights reserved.