2012-01-20 61 views
1

我的最終目標是使用php從url中去除查詢字符串。所以我不想在PHP更改使用查詢字符串參數之前將其刪除。我可以使用PHP修改url而不是.htaccess嗎?

我想借此: 「http://www.mysite.com?id=3993993」

和使用$ _GET [ '身份證']使用PHP的東西,

,然後刪除「 ?id = 3993993「從URL離開我們與」http://www.mysite.com「。

關於如何做到這一點的任何想法?

+0

所以你想從一個ID的URL重定向到沒有?爲什麼身份證在那裏,你是否在做任何事情? –

+1

使用POST而不是獲得 – WordsWorth

回答

0

你可以通過PHP函數做Header

+1

雖然此鏈接可能回答此問題,但最好在此處包含答案的重要部分並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – Smamatti

+0

好的,謝謝你的反饋。我將在下次 –

0

您可以重定向到http://www.mysite.com

header('Location: http://www.mysite.com'); 

注意,你輸出的任何內容之後,你不能做到這一點,所以如果你想生成基於產出在這個ID上,你遇到了問題。您可以將該ID存儲在會話中,並在重定向後進行讀取和處理,但如果客戶端禁用了cookie,則該操作將不起作用。

2

你可從$_GET值,並將其存儲在$_SESSION,然後重定向:

// Load the id from GET into SESSION 
session_start(); 
$_SESSION['id'] = isset($_GET['id']) ? $_GET['id'] : NULL; 

// Reidrect to the new URL 
if (isset($_GET['id'])) { 
    header("Location: http://www.mysite.com"); 
    exit(); 
} 

// Reload the value from $_SESSION if it is there (and not also in $_GET) 
if (!empty($_SESSION['id']) && !isset($_GET['id'])) { 
    $id = $_SESSION['id']; 
    // Remove it from SESSION to prevent accidental reloads 
    unset($_SESSION['id']); 
} 
+2

+1時關注它,但我希望OP不會將它用於網站導航,因爲後退按鈕不再有效。 – jeroen

0

做一個重定向並檢查引用。您也可以將其保存到cookie或$ _SESSION變量中以保證安全。

0

這樣做的唯一方法是如果讓PHP「記住」「id」的值,因爲一旦它重定向到「mysite」,就不會再有數據了。

我會使用的是一個Cookie或會話數據,即使頁面刷新也是持久的數據。

我會做這樣的事情:

$_SESSION['tempid'] = $_GET['id']; //for remembering the data 
header("Location: index.php"); //redirect 

那麼你可以參考這個變量,只要你喜歡使用會話變量:

$dosomethingwith = $_SESSION['tempid']; 
unset($_SESSION['tempid']); 

您可能需要清除會話變量你有後使用tempid

0

我能想到的唯一方法就是捕獲任何GET值,將它們存儲在會話中,然後重定向到沒有設置參數的同一頁面。

if(!empty($_GET)) { 
    $_SESSION['GET'] = $_GET; 
    $url = parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH); 
    header('Location: '.$url); 
    die(); 
} 


if(!empty($_SESSION['GET'])) { 
    $_GET = $_SESSION['GET']; 
    unset($_SESSION['GET']); 
} 
0

我不會建議你這樣做,但是,一個解決方案可能會設置一個cookie,註冊的是包含查詢參數的會話變量,然後重定向從http://www.mysite.com/?id=3993993頁面http://www.mysite.com/

<?php 
session_start(); 
$_COOKIE['something'] = md5($whatever); 
$_SESSION['query'] = $_SERVER['QUERY_STRING']; 

if ($_SERVER['QUERY_STRING'] != '/') 
    header("Location: /"); 

if (isset ($_SESSION['query'])){ 
    /* display your page */ 
} 
?> 
用戶

我強烈建議你不是使用此:大多數搜索引擎機器人將不接受cookie。

我沒有測試這個腳本。

相關問題