php 获取当前url hash,http - 我可以在服务器端应用程序(PHP,Ruby,Python等)上读取URL的哈希部分吗?...
http - 我可以在服務器端應用程序(PHP,Ruby,Python等)上讀取URL的哈希部分嗎?
假設URL為:
www.example.com/?val=1#part2
PHP可以使用GET數組讀取請求變量part2。
哈希值part2也可讀嗎? 或者這只是瀏覽器和JavaScript?
12個解決方案
191 votes
主要問題是瀏覽器甚至不會發送帶有片段部分的請求。 片段部分在瀏覽器中解析。 所以它可以通過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 -
服務器在沒有#appendage的情況下接收請求 - 在哈希標記之后的任何內容都只是客戶端上的錨點查找。
您可以通過javascript使用URL中找到錨名稱,例如:
如果您已經擁有包含片段所需的URL字符串([http://codepad.org/BDqjtXix]:],PHP中的parse_url()函數可以工作
echo parse_url("http://foo?bar#fizzbuzz",PHP_URL_FRAGMENT);
?>
Output: fizzbuzz
但我不認為PHP接收片段信息,因為它只是客戶端。
tom answered 2019-03-15T22:53:54Z
48 votes
它可以從Javascript中檢索 - 如window.location.hash.從那里你可以用Ajax將它發送到服務器,或者編碼并將其放入URL然后可以傳遞到服務器端。
Alister Bulman answered 2019-03-15T22:54:18Z
25 votes
哈希從不發送到服務器,所以沒有。
PatrikAkerstrand answered 2019-03-15T22:54:42Z
8 votes
是的,這是真的,服務器沒有獲得錨點部分。 但是有一種使用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
答案是不。
哈希的主要目的是滾動到已定義書簽的頁面的某個部分。 例如 頁面加載時滾動到此部分。
瀏覽將滾動,使得此行是頁面中的第一個可見內容,具體取決于該行下方有多少內容。
是的,javascript可以訪問它,然后一個簡單的ajax調用將發揮魔力
Qiniso Mdletshe answered 2019-03-15T22:55:46Z
3 votes
我認為哈希值只用于客戶端,所以你無法用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
?>
這應該工作
Keshav Kalra answered 2019-03-15T22:56:41Z
1 votes
window.location.hash之后的部分URI稱為“片段”,根據定義,僅在客戶端可用/處理(參見[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;
當然在PHP中,爆炸那只小狗并獲得其中一個值
$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獲取哈希值并使用該參數調用ajax并且可以做任何我們想做的事情
Keshav Kalra answered 2019-03-15T22:58:10Z
-1 votes
另一種解決方案是在php頁面中添加一個隱藏的輸入字段:
使用javascript / jQuery,您可以在頁面加載或響應事件時設置此字段的值:
$('#myHiddenLocationHash').val(document.location.hash.replace('#',''));
在服務器端的php中,您可以使用$ _POST集合讀取此值:
$server_location_hash = $_POST['myHiddenLocationHash'];
Matteo Conta answered 2019-03-15T22:58:47Z
總結
以上是生活随笔為你收集整理的php 获取当前url hash,http - 我可以在服务器端应用程序(PHP,Ruby,Python等)上读取URL的哈希部分吗?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php钩子的作用,php中的钩子理解及应
- 下一篇: php面向对象的概括图解,简单介绍PHP