【问题标题】:PHP Post Unset Fully [duplicate]PHP Post完全取消设置[重复]
【发布时间】:2014-05-28 11:13:25
【问题描述】:

好的,所以我发现一些浏览器会尝试变得更聪明,即使你刷新也能记住表单数据。但是,如果您单击 url 栏并按 Enter 键,它会完全取消设置帖子数据

有没有办法完全取消设置 $_POST 数据,即使你刷新它? (谷歌浏览器)所以它无法记住。

 <?php 
 if (isset($_POST['loginsubmit']))
 {
     echo 'triggered';
     unset($_POST['loginsubmit']);   
 }
 ?>

【问题讨论】:

  • 您需要了解 HTTP 的工作原理。新请求 = 新 $_POST。不想要某个值?从页面中删除它。
  • 那么有没有办法去掉呢?
  • 所以你发送了一个表单,然后你按下 F5,让你想知道为什么浏览器会这样?欢迎来到互联网,这就是它的工作原理,这不是 PHP 也不是任何人的错。您要做的是聚焦浏览器的 URL 栏并按 ENTER(SHIFT + F6 > ENTER)。不是 F5。

标签: php


【解决方案1】:

通过刷新,您正在重新发送您的 POST 请求。 如果您“点击地址栏”,您不会重新发送它,您只需使用 GET 请求调用 URL。 这是由您的浏览器处理的,而不是由 PHP 处理的。

但是,您可以使用sessions 来防止 POST 数据被提交两次。

做到这一点的一种方法是在您的表单中设置一个令牌,并在会话中设置(只需在创建表单时将其存储在会话中)。

如果数据通过 POST 提交并处理(即插入数据库),则检查 Token 是否存在于 Session 中。 处理完数据后,您从 Session 中删除令牌。

【讨论】:

    猜你喜欢
    • 2014-03-25
    • 2013-03-18
    • 2013-01-31
    • 2018-07-20
    • 2013-05-02
    • 2014-09-29
    • 2017-05-28
    • 2015-02-01
    • 2023-04-03
    相关资源
    最近更新 更多