php防止用户重复提交表单
我们在提交表单的时候,有一个不可忽视的限制就是防止用户重复提交表单,因为有可能用户连续点击提交按钮或者攻击者恶意提交数据,然后我们在提交数据之后就会陷入麻烦,比如修改数据或者将数据添加到数据库中。
渲染:
那么如何避免表单重复提交的现象呢?我们可以从很多方面入手:
先从前端限制。单击按钮一次后,前端javascript被禁用,即被禁用。这种方法只是防止多次点击提交按钮,但缺点是如果用户禁用JavaScript脚本,它将是无效的。
第二,我们可以在提交后重定向页面,即提交后跳转到新的页面,这主要避免了F5的重复提交,但也有一些缺点。
第三,数据库是唯一的索引约束。
第四,做会话令牌验证。现在,让我们看看使用会话令牌来防止表单重复提交的简单方法。我们在表单中添加一个输入隐藏字段,即type='hidden ',其值用于保存令牌值。当页面刷新时,该令牌值将会改变。提交后,我们将判断令牌值是否正确。如果前台提交的令牌与后台不匹配,则视为重复提交。
?Php /* * PHP只是使用token来防止表单的重复提交*/session _ start();标题(' Content-Type:文本/html;charset=utf-8 ');函数set _ token(){ $ _ SESSION[' token ']=MD5(micro time(true));} function valid _ token(){ $ return=$ _ REQUEST[' token ']==$ _ SESSION[' token ']?真:假;set _ token();return $ return}//如果标记为空,则标记为if(!isset($ _ SESSION[' token '])| | $ _ SESSION[' token ']==' '){ set _ token();} if(isset($ _ POST[' web ']){ if(!Valid_token()){ echo 'token错误,请不要再次提交!}else{ echo '成功提交,值: '。$ _ POST[' web '];} }else{?form method=' post ' action=' input type=' hidden ' name=' token ' value='?php echo $_SESSION['token']?'输入类型=' text ' class=' input ' name=' web ' value=' www . JB 51 . net '输入类型=' submit ' class=' BTN ' value=' submit '/form?php }?以上是防止重复提交表单的一个简单示例。
那么,在实际的项目开发中,表单令牌会比较复杂,那就是令牌验证。可能的过程包括:验证源域,即路由是否是外部提交的;匹配要执行的动作有:增加、修改、删除;其次,最重要的是建立令牌。令牌可以采用可逆加密算法,这种算法尽可能复杂,因为明文仍然不安全。
以上就是如何解决ph阻止用户重复提交表单的问题。希望对大家的学习有帮助。
版权声明:php防止用户重复提交表单是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。