我的最終目標是使用php從url中去除查詢字符串。所以我不想在PHP更改使用查詢字符串參數之前將其刪除。我可以使用PHP修改url而不是.htaccess嗎?
我想借此: 「http://www.mysite.com?id=3993993」
和使用$ _GET [ '身份證']使用PHP的東西,
,然後刪除「 ?id = 3993993「從URL離開我們與」http://www.mysite.com「。
關於如何做到這一點的任何想法?
我的最終目標是使用php從url中去除查詢字符串。所以我不想在PHP更改使用查詢字符串參數之前將其刪除。我可以使用PHP修改url而不是.htaccess嗎?
我想借此: 「http://www.mysite.com?id=3993993」
和使用$ _GET [ '身份證']使用PHP的東西,
,然後刪除「 ?id = 3993993「從URL離開我們與」http://www.mysite.com「。
關於如何做到這一點的任何想法?
您可以重定向到http://www.mysite.com
:
header('Location: http://www.mysite.com');
注意,你輸出的任何內容之後,你不能做到這一點,所以如果你想生成基於產出在這個ID上,你遇到了問題。您可以將該ID存儲在會話中,並在重定向後進行讀取和處理,但如果客戶端禁用了cookie,則該操作將不起作用。
你可從$_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']);
}
+1時關注它,但我希望OP不會將它用於網站導航,因爲後退按鈕不再有效。 – jeroen
做一個重定向並檢查引用。您也可以將其保存到cookie或$ _SESSION變量中以保證安全。
這樣做的唯一方法是如果讓PHP「記住」「id」的值,因爲一旦它重定向到「mysite」,就不會再有數據了。
我會使用的是一個Cookie或會話數據,即使頁面刷新也是持久的數據。
我會做這樣的事情:
$_SESSION['tempid'] = $_GET['id']; //for remembering the data
header("Location: index.php"); //redirect
那麼你可以參考這個變量,只要你喜歡使用會話變量:
$dosomethingwith = $_SESSION['tempid'];
unset($_SESSION['tempid']);
您可能需要清除會話變量你有後使用tempid
我能想到的唯一方法就是捕獲任何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']);
}
我不會建議你這樣做,但是,一個解決方案可能會設置一個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。
我沒有測試這個腳本。
所以你想從一個ID的URL重定向到沒有?爲什麼身份證在那裏,你是否在做任何事情? –
使用POST而不是獲得 – WordsWorth