簡體   English   中英

如何確保只有從特定功能重定向的用戶才能訪問我的網站頁面?

[英]How can I make sure that a user visits a page of my site only if he's redirected from a specific function?

在我的頁面中,我正在使用JavaScript函數

<script> 
function redirect(){ 
    window.location="hurray.php";
}
</script>

從下面的行調用該函數。

<input id="search_box" name="textbox" type="text" size="50" maxlength="100" onkeypress="redirect()" />

現在,我要確保僅通過此操作訪問頁面“ hurray.php”。 如果我將直接URL輸入到“ hurray”頁面,則我將無法訪問此頁面,而應將其重定向到上一個頁面。

我不認為您不能僅使用JavaScript來完成此操作。

您需要在服務器上攔截它並進行相應處理。

您可能需要將令牌與重定向一起發送,然后可以驗證此令牌服務器端,並允許重定向完成,或者如果用戶被錯誤地發送到那里或直接輸入URL,則可以執行其他操作。

您為什么要在給出的示例中執行此操作? 這樣肯定會導致用戶離開搜索表單並轉到另一個頁面嗎?

對PHP函數進行AJAX調用,該函數將在會話中設置變量。 當AJAX調用返回響應時,將用戶重定向到此頁面並檢查會話變量。 如果您不希望用戶再次訪問該會話,則可以將其刪除。

擴展您的功能,使其通過“ document.cookie”設置一個cookie,然后通過JS,PHP或目標頁面上的任何內容檢查該cookie是否設置,如果沒有設置則重定向到其他地方,非常簡單。 當然那不是很安全!

您的示例中是否包含真實的代碼,或者您只是包含了一些使問題變得更簡單的內容?

這樣做似乎很奇怪-為用戶提供搜索框,然后在他們開始鍵入內容時將他們重定向到另一個頁面。

如果您正在搜索,並且只希望從表單觸發earch頁面,而不是由用戶鍵入URL,則可以考慮將表單方法設置為“ POST”,然后在搜索頁面上進行檢查。 如果該方法為“ GET”,則說明該URL是手動鍵入的,您可以重定向回原始頁面。

誠然,這在技術上違反了有關使用“ POST”的建議,后者僅應用於更改信息的操作,而不是在詢問信息時應使用的“ GET”。 但是,在這種情況下,這可能是可以原諒的。

您可以使用的另一種方法是生成某種唯一鍵,並將其存儲在表單的隱藏字段中,在確定是否重定向到原始頁面之前進行檢查。 這將需要某種可靠的密鑰生成方案,使其略為棘手,但並非不可能。

暫無
暫無

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

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