我不知道这种技术是否正确。无论如何,在我的页面上我有一个提交按钮。 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”时设置标志。
还有更好的东西吗?
答案 0 :(得分:1)
我建议你两个选择:
$_SESSION
$_SESSION
是用于信息存储的资源。您可以使用它将消息存储到用户,然后在视图中显示存储的消息。在交付之后,您可能希望清理商店以避免在每个页面中显示相同的消息。
您还可以通过Javascript(也就是AJAX调用)动态地将POST发送到服务器,并使其提供带有结果的JSON。只需使用JSON即可显示返回的消息。