php 获取当前url hash,http - 我可以在服务器端应用程序(PHP,Ruby,Python等)上读取URL的哈希部分吗?...
http - 我可以在服務(wù)器端應(yīng)用程序(PHP,Ruby,Python等)上讀取URL的哈希部分嗎?
假設(shè)URL為:
www.example.com/?val=1#part2
PHP可以使用GET數(shù)組讀取請求變量part2。
哈希值part2也可讀嗎? 或者這只是瀏覽器和JavaScript?
12個(gè)解決方案
191 votes
主要問題是瀏覽器甚至不會發(fā)送帶有片段部分的請求。 片段部分在瀏覽器中解析。 所以它可以通過JavaScript訪問。
無論如何,您可以使用parse_url()將URL解析為位,包括片段部分,但顯然不是您的情況。
Ionu? G. Stan answered 2019-03-15T22:53:03Z
95 votes
簡單測試,訪問[http:// localhost:8000 / hello?foo = bar#this-is-not-sent-to-server]
python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"
Serving HTTP on 0.0.0.0 port 8000 ...
localhost - - [02/Jun/2009 12:48:47] code 404, message File not found
localhost - - [02/Jun/2009 12:48:47] "GET /hello?foo=bar HTTP/1.1" 404 -
服務(wù)器在沒有#appendage的情況下接收請求 - 在哈希標(biāo)記之后的任何內(nèi)容都只是客戶端上的錨點(diǎn)查找。
您可以通過javascript使用URL中找到錨名稱,例如:
如果您已經(jīng)擁有包含片段所需的URL字符串([http://codepad.org/BDqjtXix]:],PHP中的parse_url()函數(shù)可以工作
echo parse_url("http://foo?bar#fizzbuzz",PHP_URL_FRAGMENT);
?>
Output: fizzbuzz
但我不認(rèn)為PHP接收片段信息,因?yàn)樗皇强蛻舳恕?/p>
tom answered 2019-03-15T22:53:54Z
48 votes
它可以從Javascript中檢索 - 如window.location.hash.從那里你可以用Ajax將它發(fā)送到服務(wù)器,或者編碼并將其放入U(xiǎn)RL然后可以傳遞到服務(wù)器端。
Alister Bulman answered 2019-03-15T22:54:18Z
25 votes
哈希從不發(fā)送到服務(wù)器,所以沒有。
PatrikAkerstrand answered 2019-03-15T22:54:42Z
8 votes
是的,這是真的,服務(wù)器沒有獲得錨點(diǎn)部分。 但是有一種使用cookie的解決方法。 你可以在這里找到它:[http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/]
VangelisB answered 2019-03-15T22:55:06Z
7 votes
答案是不。
哈希的主要目的是滾動到已定義書簽的頁面的某個(gè)部分。 例如 頁面加載時(shí)滾動到此部分。
瀏覽將滾動,使得此行是頁面中的第一個(gè)可見內(nèi)容,具體取決于該行下方有多少內(nèi)容。
是的,javascript可以訪問它,然后一個(gè)簡單的ajax調(diào)用將發(fā)揮魔力
Qiniso Mdletshe answered 2019-03-15T22:55:46Z
3 votes
我認(rèn)為哈希值只用于客戶端,所以你無法用php獲取它。
你可以用javascript將它重定向到php。
Silfverstrom answered 2019-03-15T22:56:16Z
2 votes
$url=parse_url("http://domain.com/site/gallery/1?user=12#photo45 ");
echo $url["fragment"]; //This variable contains the fragment
?>
這應(yīng)該工作
Keshav Kalra answered 2019-03-15T22:56:41Z
1 votes
window.location.hash之后的部分URI稱為“片段”,根據(jù)定義,僅在客戶端可用/處理(參見[https://en.wikipedia.org/wiki/Fragment_identifier])。
在客戶端,可以使用帶有window.location.hash的javaScript訪問它。
MrTux answered 2019-03-15T22:57:13Z
1 votes
是的你可以:
使用此方法可以防止錯誤:
query=location.hash;
document.cookie= 'anchor'+query;
當(dāng)然在PHP中,爆炸那只小狗并獲得其中一個(gè)值
$split = explode('/', $_COOKIE['anchor']);
print_r($split[1]); //to test it, use print_r. this line will print the value after the anchortag
Aurora answered 2019-03-15T22:57:45Z
0 votes
我們也可以用另一種方法來做,就像首先從js獲取哈希值并使用該參數(shù)調(diào)用ajax并且可以做任何我們想做的事情
Keshav Kalra answered 2019-03-15T22:58:10Z
-1 votes
另一種解決方案是在php頁面中添加一個(gè)隱藏的輸入字段:
使用javascript / jQuery,您可以在頁面加載或響應(yīng)事件時(shí)設(shè)置此字段的值:
$('#myHiddenLocationHash').val(document.location.hash.replace('#',''));
在服務(wù)器端的php中,您可以使用$ _POST集合讀取此值:
$server_location_hash = $_POST['myHiddenLocationHash'];
Matteo Conta answered 2019-03-15T22:58:47Z
總結(jié)
以上是生活随笔為你收集整理的php 获取当前url hash,http - 我可以在服务器端应用程序(PHP,Ruby,Python等)上读取URL的哈希部分吗?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php钩子的作用,php中的钩子理解及应
- 下一篇: php面向对象的概括图解,简单介绍PHP