是更好地檢查是否有定義的常量,檢查URL,或其他任何方式....使用什麼檢查來防止直接訪問頁面(使用PHP)?
像
的if($_SERVER['REQUEST_URI'] == $_SERVER['PHP_SELF'])
if(!defined(INCLUDED))
做什麼方法你檢查如果一個文件被直接訪問,那麼,防止直接訪問頁面是非常重要的...(我認爲一個網站應該按照它的設計方式工作,所以直接訪問會違反這個規則,但是)你的想法是什麼
是更好地檢查是否有定義的常量,檢查URL,或其他任何方式....使用什麼檢查來防止直接訪問頁面(使用PHP)?
像
的if($_SERVER['REQUEST_URI'] == $_SERVER['PHP_SELF'])
if(!defined(INCLUDED))
做什麼方法你檢查如果一個文件被直接訪問,那麼,防止直接訪問頁面是非常重要的...(我認爲一個網站應該按照它的設計方式工作,所以直接訪問會違反這個規則,但是)你的想法是什麼
定義一個常量可能是最好的方式去做,而不需要深入研究代碼......只需在包含行之前定義一個常量,並檢查它是否在包含文件中定義...
主文件
<?php
define("IS_INCLUDED",true);
include "included_file.php";
?>
included_file.php
<?php
if(!defined("IS_INCLUDED")){
header("Location: error_page.php");
}
?>
如果訪問該網頁這樣一來,常量不會被定義,它們會被重定向到任何你想要的地方。
如果你不希望他們能夠被直接訪問,你不需要破解你的文件。只需將它們放置在公共可查看目錄之外的目錄中,並且它們不能被公衆訪問。您的PHP腳本仍然可以輕鬆訪問它們。
另一點,如果您不能將文件放在Web目錄之外,請使用.htaccess保護目錄並將其放在那裏。 – MitMaro 2009-09-11 01:23:17
有三種方法解決這個問題,我經常看到/使用:
作爲(2)的一個例子:
RewriteEngine On
RewriteRule ^include/ [R=404,L]
這發出未發現錯誤任何企圖文件打包括目錄。
你是在這裏發佈的同一個人嗎? http://stackoverflow.com/questions/1408201/redundancy-in-php-safer-or-unnecessary/1408263#1408263我在這個問題上發佈了一個答案,可以回答你在這裏問的問題。 – DisgruntledGoat 2009-09-11 01:25:26