2014-01-22 87 views
0

有什麼辦法有,例如:頁面不能被某個其他頁面請求。

**result.php** 

只有所要求的工作:

**input.php** 

否則拋出一個錯誤。

明顯沒有直接訪問result.php,但也沒有從除input.php以外的任何其他頁面訪問。

這是可以完成的事情嗎?我嘗試過使用谷歌搜索的方式,例如「限制頁面訪問特定的其他頁面」等。但它沒有任何相關性,只是不相干的東西,如改變chmod等,這不是我所追求的。

非常感謝您的任何幫助....或至少指出我應該如何制定問題。

+1

你是什麼意思,「請求''input.php'?你的意思是你想檢查[推薦人](https://en.wikipedia.org/wiki/HTTP_referer)? – ruakh

+0

對不起 - 澄清 - 當你有一個從input.php鏈接到result.php的鏈接。所以,否則它不應該直接或從其他頁面工作。是的,我剛剛查看了你發佈的鏈接 - 我想推薦人就是這樣,只需要弄清楚。 –

+0

如果我正確理解你的問題,'debug_backtrace'就是你之後的東西 - http://au1.php.net/debug_backtrace - 這將返回一個關聯數組,你可以檢查以確保results.php被文件調用input.php。 問題在於該文件將返回文件的完整地址(即/Applications/MAMP/program/input.php),因此當您部署到另一臺服務器時,預期結果將會不同。 –

回答

2

如果你只是想防止人們不小心打開錯誤的頁面,檢查就足夠了。 HTTP Referer標題包含鏈接到請求的頁面的URL,因此在您的result.php代碼中,您可以檢查該引用者是否爲input.php頁面的正確URL。

但是,引用標頭是由客戶端(例如瀏覽器)發送的,因此您依靠它來告訴您實情。一個熟練的用戶可以請求您的result.php頁面假冒引用標頭他們來自input.php當他們真的沒有。這被稱爲referer spoofing

如果需要防止的是,出於安全原因,那麼你需要使用PHP的session支持跟蹤其中的步驟,用戶迄今已完成在服務器上,這樣當用戶試圖訪問result.php ,您可以通過一種不容易被欺騙的方式來檢查先決條件。