如何防止 CakePHP 3.0 中的多个表单提交?

Posted

技术标签:

【中文标题】如何防止 CakePHP 3.0 中的多个表单提交?【英文标题】:How to prevent multiple form submission in CakePHP 3.0? 【发布时间】:2015-08-03 09:01:32 【问题描述】:

我刚刚浏览了这个问题

How to prevent double / duplicate form submissions in Cakephp?

但似乎没有一个解决方案适用于 CakePHP 3.x。

例如,$this->Security->csrfUseOnce = true; 没有帮助,仍然接受重复数据。

这是否随着新版本的蛋糕而演变?在 cake 3.0 中我应该怎么做?

【问题讨论】:

PRG 模式有什么问题?您需要重复表单提交保护的具体场景是什么? @ndm,我只是想防止用户多次点击提交。当然,这可以使用 javascript 来完成。但是为了增加安全性,我想我也会在服务器上进行验证,因为 cake 的内置安全组件使用令牌和会话变量。 【参考方案1】:

从 3.x CSRF 组件中删除了一次令牌,因为通常会话令牌不那么麻烦。如果您想拥有一次性令牌,您需要自己将其实现为应用程序/插件中的组件。如果您确实走这条路,请尝试使用支持原子获取/删除的数据存储,例如 redis 或 memcache。

【讨论】:

以上是关于如何防止 CakePHP 3.0 中的多个表单提交?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 cakephp 中通过 ajax 提交 jquery 移动弹出表单

cakephp 3.0 - 保存独特的关联

如何防止在 PHP 中多次单击时提交多个表单

如何防止在 PHP 中重复提交表单(跨多个窗口进行保护)?

防止表单数据无效时单击多个(提交)按钮(vee-validate)

如何使用 PHP 会话来防止重复提交表单?