2017-09-04 51 views
-2

我想隱藏特定頁面的網址,以防止用戶直接訪問它。我可以隱藏特定頁面的實際URL嗎?

我有一個表格,用戶必須在重定向到www。******。com/xyz.php之前完成。

當他們完成表單並被重定向後,是否有可能將網址顯示爲www。******.com?

期待任何意見!

+4

你爲什麼重定向他們?爲什麼不直接提供內容來響應表單中的POST請求? – Quentin

+1

永遠不要考慮「隱藏URL」。用戶看到的頁面由URL確定。瀏覽器中顯示的URL是用戶看到的頁面。您不能讓用戶訪問頁面A,但在地址欄中顯示頁面B.如果他們正在訪問頁面B,那麼頁面B將顯示在他們的地址欄中,否則他們將不會訪問頁面B.您需要考慮的是HTTP的請求 - 響應思想,並且您的服務器始終處於完全控制它發送給什麼*請求*的*響應*。網址只是其中的一小部分。 – deceze

回答

0

雖然它可能不是最佳實踐,但您可以爲Http Get操作提供一組html,併爲Http Post操作提供另一組html。您的動作可以返回表單,對帖子動作的回覆可能會返回您的第二頁。

有許多的原因,這是一個壞主意,這其中就包括

  • HTTP POST指引起的狀態變化,防不住訪問 頁面
  • 這是很容易與擊敗任何類型的代理或休息客戶端
  • 在瀏覽器中的導航可能會出現意外
  • 用戶將不得不填寫表單爲每次訪問。

想出一個替代的解決方案,比如生成一個臨時訪問令牌或設置一個cookie來表示他們已經完成了表單,這樣做會好得多。

最好的解決方案可能是待討論,但一個簡單的解決方案是有兩個.PHP頁面讓我們稱他們index.phpform.php。當GET請求www.example.com時,您的Web服務器配置爲提供index.php。 (確切的做法取決於您的服務器軟件)。

index.php檢查cookie並重定向到form.php如果cookie未設置。 See this question/answer for more details

form.php響應由服務於HTML的形式,並通過設置cookie並且重新回到index.php一個POST請求GET請求。

+0

「輕鬆擊敗」...?它不完全應該是防禦任何事情開始... – deceze

+0

@deceze「,以防止用戶直接訪問它」 - 但也許防禦還是有點過於強大 –

-2

在WWW的根目錄**** COM創建一個名爲.htaccess文件(如果它不存在),並添加以下行吧:。

DirectoryIndex xyz.php 

這將所有重定向請求www。****。com到www。***。com/xyz.php

因此,如果用戶訪問www。****。com,url(顯示在瀏覽器中)會是一樣的,但頁面加載將是xyz.php

:)

+0

「在www。****。com的根目錄創建一個名爲.htaccess的文件「 - 您在這裏對Web服務器技術進行了假設。 – Quentin

+1

「這會將所有請求重定向到www。****。com到www。***。com/xyz.php」 - 問題中陳述的目標是**防止**直接訪問'xyz.php '。這段代碼可以直接訪問兩個不同的URL! – Quentin