我们提交表单时,一个不能忽略的限制是防止用户多次提交表单,因为可能用户点击提交按钮是连续的或恶意攻击者提交数据,所以我们在提交数据时,如在遇到麻烦时修改或向数据库添加数据。


设计素描 uff1a



那么,你如何避免这种形式的重复提交呢我们可以从很多方面入手:

第一个限制来自前端。在单击一次按钮后禁用前端Javascript,即禁用,此方法简单地防止多单击提交按钮,但缺点是如果用户禁用Javascript脚本,它将失败。

其次,我们可以在提交后重定向页面重定向,也就是在提交后跳转到新页面,主要避免重复F5提交,但也存在一些不足之处。

第三,数据库是惟一的索引约束。

第四,是做会话令牌验证。

我们现在正在寻找一种简单的方法来使用会话令牌来防止表单复制。

我们以隐藏字段的形式添加一个输入,即type =隐藏




< PHP
*
* PHP只是使用令牌来防止表单重复提交。
* /
session_start();
标题(内容类型:文本/ HTML;字符集= UTF-8);
功能set_token(){
_session美元{ 'token} = MD5(瞬时(真的));
}

功能valid_token(){
美元:美元返回假= _request { 'token} = = = $ _session { 'token};
set_token();
返回美元;
}

如果令牌是空的,则生成令牌。
如果(!isset($ _session { 'token})| | _session美元{ 'token} = =){
set_token();
}

如果(isset($ _post {网络' })){
如果(!valid_token()){
标记错误,请不要重复提交!;
其他{ }
回声的成功提交,价值:网络。_post美元{ };
}
其他{ }
>

>



< PHP
}
>



以上是防止重复提交表单的简单示例。

在实际的项目开发,形式标记将是更复杂的,就是我们说的令牌验证。治疗可能需要做的是验证源域,即来路,无论外部;匹配要执行的动作,是添加、修改、删除或;其次最重要的是建立令牌,令牌可以用于可逆加密算法,尽可能因为复杂,安全或不明确。

以上就是与大家分享如何解决PH防止用户反复提交表单的问题,希望能帮助大家学习。