php:重定向后保存服务器方法

时间:2017-09-27 21:21:38

标签: php html5

我不知道这种技术是否正确。无论如何,在我的页面上我有一个提交按钮。 php代码的摘录如下:

<?php
$isPost = filter_input(INPUT_SERVER, "REQUEST_METHOD", FILTER_SANITIZE_STRING) == "POST";

if ($isPost) {
  // do something...      
  header("Location: " . filter_input(INPUT_SERVER, "REQUEST_URI", FILTER_SANITIZE_URL));
  exit();
}

通过这种方式,我可以避免在用户刷新页面时重新发送帖子数据的恼人问题。

当然,一个缺点是,请求方法变量的值,在中检索 html页面中的总是“GET”。

保留它会很好,例如显示保存数据的警告:

<div class="alert alert-success alert-dismissible fade <?php echo (filter_input(INPUT_SERVER, "REQUEST_METHOD", FILTER_SANITIZE_STRING) == "POST") ? "show" : "" ?> " role="alert">
    Settings successfully saved.
</div>

这不起作用,因为它永远不会评估为“POST”! 一个丑陋的缺点(并且非常容易出现错误)是使用浏览器的本地存储来在php代码发现是“POST”时设置标志。

还有更好的东西吗?

1 个答案:

答案 0 :(得分:1)

我建议你两个选择:

使用$_SESSION

$_SESSION是用于信息存储的资源。您可以使用它将消息存储到用户,然后在视图中显示存储的消息。在交付之后,您可能希望清理商店以避免在每个页面中显示相同的消息。

执行动态请求

您还可以通过Javascript(也就是AJAX调用)动态地将POST发送到服务器,并使其提供带有结果的JSON。只需使用JSON即可显示返回的消息。