让PHP,但使用#代替?=

让PHP,但使用#代替?=

问题描述:

当使用$ _GET []在PHP中,搜索一个变量e.g?ID =值让PHP,但使用#代替?=

有没有办法来调用#VALUE呢?

不,因为url的哈希部分只是客户端,并且不会发送到服务器。

当您在浏览器的URL文本框中输入URL(如http://server.com/dir/file.php?a=1#something)时,浏览器会打开与server.com的连接,然后发出HTTP命令GET /dir/file.php?a=1 HTTP/1.1。这是发送到服务器的唯一数据。 因此,服务器永远不会获得#something部分,这意味着服务器端没有可以写入的脚本来读取该值。

类似的问题在这里解释:How to get Url Hash (#) from server side

+0

感谢您的及时答复naivists – Andy 2010-01-07 19:24:26

+0

+1,绝对正确。但是,下面是一个让事情看起来十分混乱的例子:http://www.google.com/#q=test。由于一些聪明的JavaScript,Google似乎会弯曲这些规则。如果清除缓存并观看LiveHTTPHeaders,则发送/(无片段)请求,该请求会加载JavaScript,从而触发对实际搜索结果数据的请求(该请求的查询字符串是从Window中的片段读取的。位置(?)使用javascript):GET/search?q = test&fp = 1&cad = b HTTP/1.1。我肯定有一些有趣的原因,谷歌这样做的事情。 – 2010-01-07 21:53:49

+0

@naivist有趣。我确信之前在服务器端的URL中看到过这个片段,但是你是对的,因此我删除了我的答案。现在我只需要找到说明为什么它是这样的RFC。毕竟,这是一个有效的URI组件。 – Gordon 2010-01-07 22:25:30

呀,有一种方法。我想你想要做的是:

$arValues = array_values($_GET); 
// whatever else you want to do with the values 
+0

他想获取URL片段。他的意思是?=是常规参数,例如富=巴。但他在#后查找URL中的值。 – Gordon 2010-01-07 19:52:48

+0

正确。我选择使用正常的?=变量 – Andy 2010-01-09 17:38:38

我已经能够通过获得通过JavaScript片段和发送与片段作为$ _GET内容的Ajax请求解决它。

不知道你的整个案例,我可能会偏离轨道,但有可能通过简单的GET类型的xmlhttprequest将#something发送到服务器。