2009-06-25 203 views
2

我有一些頁面,我不希望用戶能夠直接訪問。PHP:防止直接訪問頁面

我有這個功能,我想出了它的工作原理:

function prevent_direct_access() 
{ 
    if($_SERVER['REQUEST_URI'] == $_SERVER['PHP_SELF']) 
    { 
     //include_once('404.php'); 
     header("Location: 404.php"); 
    } 
} 

這不正是我想要的,該URL不會改變,但內容一樣。不過,我想知道是否有什麼我需要添加,告訴搜索引擎,這是一個404,而不是索引它。請記住,我不希望URL改變。

謝謝!

+0

您是否有理由採用這種方法而不是使用robots.txt? – illvm 2009-06-25 15:52:42

回答

5

不重定向而是發送404個狀態碼:

header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404); 
exit; 
+0

我應該添加這與頭()我有我的代碼或添加此並刪除頭(()已經在我的代碼..只是想澄清..謝謝! – 2009-06-25 15:52:58

+1

用我的代碼替換你的`header`調用。 – Gumbo 2009-06-25 15:58:09

0

爲搜索引擎,如果你返回HTTP狀態404,他們不應該索引我相信。但你總是可以重定向到一個robots.txt某處覆蓋

0

爲了確保搜索引擎不索引它,使用header()命令發送一個404 lke這個;

header("HTTP/1.0 404 Not Found"); 

或者把所有這些文件一個文件夾中,「包括」之稱,並添加「拒絕/包括/」到您的robots.txt文件。這樣,您也可以在同一個目錄中添加一個「.htaccess」文件 - 「拒絕所有人」 - 這將告訴Apache阻止訪問(如果apache配置正確),以實現另一層安全性。

0

只是爲了澄清:

  • 你必須要提供給系統
  • 你不希望任何人訪問它在其他PHP程序,除了通過運行其他PHP程序的一個部分PHP

(即「直接」並不意味着「除了在本網站下面從另一個頁面的鏈接」)

只要保持PHP文件外部 webroot。這樣它首先不會有URL。