[英]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.