簡體   English   中英

防止直接訪問URL

[英]Prevent direct access to url

我知道這個問題已經被問過幾次了,但我仍然迷路!

我有一個網站項目(php),該項目內部托管在Apache服務器上。 該網站加載了主頁。 主頁包含一個login鏈接。 當用戶單擊login.htm頁將在單獨的選項卡中打開,該選項卡托管在IIS中的另一台服務器上(外包)。 我想防止用戶直接在地址欄中輸入login頁面的URL。 相反,用戶應始終通過項目主頁導航至login頁面。

我了解的唯一解決方法是通過htaccess文件。 當頁面位於同一服務器上時,此方法有效。 但是,在IIS上沒有htaccess文件。

另一種解決方案是單擊login時執行一個http post variable 如果變量存在(通過主頁訪問),則應加載登錄頁面,否則應將用戶重定向到主頁(如果直接輸入登錄URL)。 但是,我能夠發布一個變量,但是我不知道在哪里進行調用以加載適當的頁面。 以下用於發布變量:

<ul>
<li><form id="loginForm" name="loginForm" method="post" action="redirectTest.php">
<input type="hidden" name="total" id="total" value="">
<a href="#" onclick="setValue();">Login</a>
</form></li>

<script type="text/javascript">
function setValue(){
    document.sampleForm.total.value = 100;
    document.forms["loginForm"].submit();
}
</script>

redirectTest.php當前為空,因為我不確定如何相應地重定向。

編輯: 例如,我的網站是www.abc.com,登錄頁面是www.xyz.com/login.htm。 如何確定這是通過www.abc.com路由還是直接在地址欄中輸入的URL?

在登錄頁面上,可以使用變量$_SERVER['HTTP_REFERER'] 這將包含您單擊鏈接所在的頁面的名稱。 然后可以在if語句中使用它,如下所示:

if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] == "http://domain.com/page_with_login_link.php")

在javascript中,可以通過document.referer訪問http Referer。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM