地址欄輸入與鏈接
回答
您可以檢查$_SERVER['HTTP_REFERER']
變量,該變量將包含該人員從其導航的網址。我不確定如果他們選擇書籤或手動輸入URL會發生什麼情況,但我懷疑這個變量是空白的。
雖然,因爲它說在the manual:
頁面的地址(如果有的話),其被稱爲用戶代理到當前頁面。這由用戶代理設置。並非所有的用戶代理都會設置它,有些提供了將HTTP_REFERER修改爲功能的功能。總之,它不能真正被信任。
可靠的是,你不能。
您可以嘗試的一種方法是引用標頭(它是如何拼寫在規範中的),通常由瀏覽器發送以指示用戶來自哪裏。在PHP中,這在$_SERVER['HTTP_REFERER']
中可用。
大多數現代瀏覽器(我已經測試谷歌Chrome和火狐)發送直接入口上的連結點擊一個參照標頭和不 - 也就是說,如果用戶的設置說,他們通常默認做。
另一種選擇,根據您真正關心的程度,將一些隨機生成的會話變量添加到鏈接中的URL中,並在收到請求時查看URL中的令牌是否與令牌在用戶的會話中。如果是這樣,那麼你去。如果沒有,這個鏈接被複制粘貼。
當然,所有這些方法都很容易被毆打,並且您的服務器可能被愚弄。不要依賴他們。
如果他們點擊一個鏈接,瀏覽器會設置一個引用,您可以通過使用
$_SERVER['HTTP_REFERER']
,並檢查是否已設置檢測網址標頭的存在。如果它是空白的,則該人在URL中鍵入或具有瀏覽器擴展以清除引用者。這與你在這個問題上得到解決方案差不多。
關於所有你能做的就是看看$SERVER['HTTP_REFERER']
[原文如此]。如果您直接關聯,那麼很可能會找到與您關聯的網頁的網址。有許多情況下你不會得到它,所以你不能依賴它。
在IE中,如果您以前使用saveFavorite行爲在用戶爲您加書籤之前保留了某些數據,則可以檢測到您從書籤加載的時間。但這很醜陋。
- 1. 在地址欄中直接插入鏈接的Geb測試
- 2. 在地址欄中隱藏url鏈接
- 3. 「直接鏈接到任何fancybox」,但網址在地址欄
- 4. 接入鏈路本地地址用c
- 5. 有沒有辦法間接輸入文本到地址欄?
- 6. jquery重新加載與按地址欄上的輸入
- 7. 代碼和地址欄中的鏈接網址與預期不同
- 8. 地址:類鏈接
- 9. htaccess重定向url無需在地址欄中鏈接網址
- 10. davis.js與完整的地址鏈接
- 11. 與jQuery地址的內部鏈接
- 12. NserviceBus MSMQ輸入隊列與IP地址
- 13. 插入網址到地址欄
- 14. 複製鏈接地址
- 15. 鏈接地址不能跨
- 16. mailto:鏈接等效地址
- 17. 如何通過本地鏈接地址獲得遠程全局鏈接地址?
- 18. Angular 2.0深度鏈接不起作用。地址欄中相同
- 19. 在地址欄中隱藏url持有者iframe鏈接?
- 20. 帶有Ajax鏈接的ASP.NET MVC更新地址欄
- 21. Url shortener在地址欄中顯示短鏈接?
- 22. Angular 2路由 - 從地址欄打開鏈接
- 23. 如何打開新窗口的鏈接顯示在地址欄
- 24. 跳到內部鏈接而不更改地址欄?
- 25. 傳遞彈出鏈接,使其顯示在地址欄
- 26. 動態地改變herf鏈接與用戶文本輸入
- 27. 在地址欄
- 28. jQuery鏈接輸入
- 29. 鏈接本地地址的相關性?
- 30. Rails地址鏈接和Apple地圖APP
對。很棒的信息。它實際上是爲了演示和認證目的。 – eleete 2010-02-08 23:13:32
如果您確實想要進行身份驗證,然後在某種程度上加以保護,則您需要在URL中附加一些祕密的每用戶密鑰。這是唯一的100%可靠的方法。 – Matchu 2010-02-08 23:18:00
+1,唯一確定的方法是使用某種不斷變化的密鑰(可能存儲在會話中)來驗證鏈接是否被點擊。每次查看頁面時都應該重新生成密鑰,但只要簡短地記下時間+用戶的IP即可。 – Dereleased 2010-02-09 00:14:39