2013-07-04 45 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 –

相关问题