2015-06-19 26 views
1

我想清除我的URL。php抓取URL中的所有GET變量,並將它們作爲POST變量發送回相同的URL

當別人打我的網站,他們通常來是這樣的:

www.site.com/webpage/?var1=1 & VAR2 = 2 & VAR3 = 3

是有可能抓住所有這些GET變量,將它們作爲POST發送,重新加載頁面,抓取所有新發送的POST變量來清理url?

所以要訪問該頁面的用戶,到底它只是看起來像www.site.com/webpage/

+0

你可以使用捲曲。 – CodeGodie

+0

爲什麼你不使用.htaccess重寫URL? – nomistic

+0

另一種方法是將這些變量設置爲會話 – nomistic

回答

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 
+0

所以這將自動獲取URL中傳遞的任何變量,併發送他們的職位?我不必添加每個唯一的變量? – themike

+0

沒有POST。重定向時,它是另一個GET請求,但第二個請求沒有任何URL參數。這就是爲什麼我將它們全部保存在會話變量中,並在重定向後將其複製回'$ _GET'。 – Barmar

+0

對不起noob問題,那麼如何獲得新的空網址頁面上的所有變量? – themike

0

不,你不能讓瀏覽器發送任何重定向代碼POST請求 - 這將被需要。

第二件事:發送POST請求將禁用緩存,並不斷激怒使用瀏覽器後退按鈕的用戶,「是否要再次發送該數據」。

最好的辦法是避免將不喜歡的東西放入URL(也稱爲URL設計)中,但除了不喜歡之外,該URL與其他任何東西一樣好或壞。