2013-07-04 92 views
0

比方說,當前的URL是www.example.com/example.php?var=test#1

$_SERVER['QUERY_STRING']; 

應該返回

VAR =測試#1

,但它只是返回

測試

它發生的每一個「#」符號插入到URL的時間。

我該如何解決?我真的需要得到當前的查詢字符串,但我不能使用$ _GET(請不要問爲什麼它真的太長時間來解釋)。 我也無法控制網址,我無法控制網址字符串或在它到達我的服務器之前進行編碼。

編輯:同樣的問題與$ _SERVER ['REQUEST_URI'];

+1

'#'磅符號後的所有內容都是片段標識符,並且始終保留在客戶端。它從來不是HTTP請求路徑的一部分。 – mario

+0

它應該返回'var = test'。 (包括'#')之後的部分被稱爲哈希,並且不會發送到服務器。所以你將永遠無法從'$ _SERVER ['QUERY_STRING']'訪問它。 –

+0

我在這裏沒有看到這種行爲..有沒有任何服務器重定向? – msturdy

回答

1

如果你確實需要知道散列是什麼,你將不得不使用document.location.hash JavaScript屬性,它包含了哈希的內容....除此之外,那裏有沒有辦法讓用PHP哈希因爲它不傳遞到服務器

+0

+1。不知道是誰投了票,但你說得對。哈希只是客戶端。 –

+0

這不是一個散列,只是一個帶#的URL ...我需要將「散列」值發送到PHP –

+0

這是一個散列,那是什麼#是。並且你不能將它發送到PHP ....之後的任何#沒有使它到服務器....我已經說過 – KyleK

0

在URL中#符號代表一個鏈接到命名錨,而不是查詢字符串的一部分。要作爲查詢數據的一部分可靠地傳遞,它應該被編碼爲%23。

+0

即使我將它編碼到%23,$ _SERVER ['QUERY_STRING']仍然贏得'讀取通過%23的URL –

相關問題