一个FORM键我有一个形式,我想用户只能提交一次WHMCS,所以他们不能提交,并刷新重新提交......我在想你重置$ _ POST或重定向,但在这种情况下都不会起作用,我将如何生成一个密钥并使其唯一可用一次?不能使用mysql。智能的方式来生成与PHP
回答
为什么不在会话中存储随机密钥?这就是大多数CRSF令牌系统的工作原理:加载表单时,生成密钥并将其保存在会话中并将其包含在表单中。提交时,比较密钥并删除保存的密钥。
如果你只是不希望用户意外地重新提交成功提交表单,从@zerkms'评论的链接是你想要的:http://en.wikipedia.org/wiki/Post/Redirect/Get
是的,创建一个随机密钥,把它放在会话和窗体中,并在接收POST时进行比较。你可以在JavaScript中做一些事情,但是因为这是在客户端,所以你不能依赖它。 – Flo
当表单被提交设置会话或Cookie及检查它是否存在。
你也可以存储在数据库中的信息,如他们的IP和浏览器,如果你想进行长期的检查,但是这有它自己的问题,所以你永远不会阻止别人时间的100%。
最常见的方式,以避免重复张贴是做
header('location: /'.$your_url_here);
您完成动作之后。所以你只是重定向到同一页面,但没有$ _POST。
我建议加上'出口();'头后 – Tech4Wilco
对,没错,我也这样做 - 只是忘了在这里写:) – oyatek
都能跟得上不能做,作为页面需要$ _ POST [“身份证”]在一直。 –
我意识到这是一个老问题,但最近我有同样的问题。即使您在POST后切换到另一个smarty模板文件,如果您希望保留在产品详细信息页面(例如),则任何Post/Redirect/Get解决方案似乎都不能在WHMCS上工作。可能是因为它需要$ _POST [id'],刷新后就会消失。所以我能得到的最接近的是让它回到产品列表页面,这不是我想要的,也可能不是原始海报想要的。
我终于想出了解决的办法是提交表单后添加$_SESSION[submitted]
变量。你必须根据你在做什么来自己弄清逻辑。
我的逻辑是这样的:
if ($_SESSION['submitted'] == 1 && !isset($_POST['somecustomkey'])) { unset($_SESSION['submitted']); }
也就是说在顶部和重置,如果你的POST表单数据不存在“提交”会话密钥。
然后你写的信息到你的数据库或任何前添加一个检查。
if ($_SESSION['submitted'] != 1) { //Do some stuff with $_POST form data $_SESSION['submitted'] = 1; }
我认为这很好的满足的$ _SESSION预期目的,易于实现。
- 1. 智能的方式来产生的Neo4j边缘的大图
- 2. 智能方式
- 3. 任何方式来启用智能咖啡智能感知?
- 4. PHP:以智能编码方式整理?
- 5. 是否有更智能的方法来产生“时间以来”与DateTime对象
- 6. 一个智能的方式来导出C + +多态功能与boost.python
- 7. 智能生成组合的组合
- 8. 智能的方式来重写这个功能
- 9. 生成的YouTube式的标识与PHP
- 10. 最优雅的方式来生成可能的布尔组合
- 11. 过滤以智能方式
- 12. 快速的方式来生成令牌 - PHP
- 13. 可能的方式来生成每次保存业务实体
- 14. React原生样式的自动完成/智能感知
- 15. 是否有更智能/更好的方式来完成HTTPS/WWW重写?
- 16. 智能化的方法来区分XML
- 17. PHP - 智能的方法来保护$ _GET瓦尔恶意注入
- 18. XPATH/PHP - 更智能的方法来实现这一点?
- 19. 生成一种智能新闻摘录
- 20. 智能卡非对称密钥生成
- 21. 如何智能生成签名APK
- 22. 生成智能手表图标
- 23. 智能自动生成Javadoc评论?
- 24. 更智能的方式来更新jQuery中的td内容
- 25. 在温莎集成Pooled生活方式与PerWebRequest生活方式
- 26. 明智的方式来扩展requests.Response类?
- 27. 方式来生成jar文件
- 28. 搜索解决方案以生成智能URL
- 29. POSTGRESQL有效的方式来拆分表性能明智
- 30. 智能的方式来获得一些从ostringstream
http://en.wikipedia.org/wiki/Post/Redirect/Get – zerkms
可能重复[如何防止用户提交表单两次](http://stackoverflow.com/questions/16814157/how-以防止用户从提交表单两次) – Gajus