我想清除我的URL。php抓取URL中的所有GET变量,并将它们作为POST变量发送回相同的URL
当别人打我的网站,他们通常来是这样的:
www.site.com/webpage/?var1=1 & VAR2 = 2 & VAR3 = 3
是有可能抓住所有这些GET变量,将它们作为POST发送,重新加载页面,抓取所有新发送的POST变量来清理url?
所以要访问该页面的用户,到底它只是看起来像www.site.com/webpage/
我想清除我的URL。php抓取URL中的所有GET变量,并将它们作为POST变量发送回相同的URL
当别人打我的网站,他们通常来是这样的:
www.site.com/webpage/?var1=1 & VAR2 = 2 & VAR3 = 3
是有可能抓住所有这些GET变量,将它们作为POST发送,重新加载页面,抓取所有新发送的POST变量来清理url?
所以要访问该页面的用户,到底它只是看起来像www.site.com/webpage/
将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
不,你不能让浏览器发送任何重定向代码POST请求 - 这将被需要。
第二件事:发送POST请求将禁用缓存,并不断激怒使用浏览器后退按钮的用户,“是否要再次发送该数据”。
最好的办法是避免将不喜欢的东西放入URL(也称为URL设计)中,但除了不喜欢之外,该URL与其他任何东西一样好或坏。
你可以使用卷曲。 – CodeGodie
为什么你不使用.htaccess重写URL? – nomistic
另一种方法是将这些变量设置为会话 – nomistic