php获取URL中的所有GET变量,并将它们作为POST变量发送回相同的URL

时间:2015-06-19 23:25:01

标签: php

我想清除我的网址。

当人们访问我的网站时,他们通常会遇到这样的事情:

www.site.com/webpage/?var1=1&var2=2&var3=3

是否有可能获取所有这些GET变量,将它们作为POST发送,重新加载页面,并抓取所有新发送的POST变量来清理URL?

所以对于访问该页面的用户来说,它最终看起来像www.site.com/webpage /

2 个答案:

答案 0 :(得分:3)

GET参数保存到会话变量中,并重定向回不带任何参数的URL。在没有参数的情况下调用时,从会话中获取参数。

session_start();
if (empty($_GET) && isset($_SESSION['_GET'])) {
    // This is the page after the redirect, copy the session variable back into $_GET
    $_GET = $_SESSION['_GET'];
} elseif (!empty($_GET)) {
    // When called with parameters, copy $_GET into a session variable
    $_SESSION['_GET'] = $_GET
    // and then redirect to the page with no parameters
    header("Location: /webpage/");
    exit();
}
unset($_SESSION['_GET']); // So it's only used once
// Use $_GET in the rest of the script as normal

答案 1 :(得分:0)

不,你不能让浏览器发送带有任何重定向代码的帖子请求 - 这是必需的。

第二件事:发送POST请求将禁用缓存,并且不断地使用浏览器后退按钮的人员惹恼“你想再发送那些数据”的问题。

最好的办法是避免将您不喜欢的内容放入网址(即网址设计)中,但除了您不喜欢之外,此网址与其他内容一样好坏。