【问题标题】:How to protect from resubmiting action如何防止重新提交操作
【发布时间】:2014-01-17 23:50:26
【问题描述】:

我使用 GET 获取变量并具有如下链接:

.../cart.php?article=dress&color=red&qty=1&price=100&action=add

表单重定向到相同的 .php 文件并具有:

if(isset($_GET["action"]))  
        {  
        switch($_GET["action"])  
                {  
        case "add":  
                ......  
                break;  
                }  
         }

如何从链接中删除操作或以其他方式保护以重新提交操作。无需删除其他变量,因为表单下有文章列表,点击返回时可以查看列表中的内容。

【问题讨论】:

  • 为什么不在表单中使用 POST 和 PRG 模式 (en.wikipedia.org/wiki/Post/Redirect/Get)?
  • 我不知道,有帮助吗?我在想 POST 也有同样的问题。
  • 我在一个表单中执行了多项操作,该帖子对我有帮助吗?
  • 如果action变量是一个POST变量,它不会是URL的一部分,因此,当你发布后重定向时,你将无法重新提交。
  • 我尝试使用 POST 但相同,只是浏览器要求确认重新提交。很多用户会在不知道会添加另一篇文章的情况下点击确认。

标签: php sql forms get action


【解决方案1】:
unset($_GET['action']);
header("Location: cart.php?" . http_build_query($_GET));

【讨论】:

  • 我是否理解正确:如果我使用POST,表单将不会重新提交,但用户点击返回时不会在表单下看到已添加的文章列表。 Barmar 我必须将 unset 放在我所有页面的底部以确保始终是未设置的操作,还是将其放入案例中?
猜你喜欢
  • 2011-04-24
  • 2018-03-18
  • 2022-07-12
  • 2013-11-06
  • 1970-01-01
  • 2018-10-31
  • 1970-01-01
  • 2019-03-28
  • 1970-01-01
相关资源
最近更新 更多