你好,我正在尝试为我要建立的网站制作部件,比如header.php、footer.php等等。我希望这些文件只有在被引用时才能工作,而且没有人可以直接访问它们。请问有什么方法可以做到这一点吗?
你好,我正在尝试为我要建立的网站制作部件,比如header.php、footer.php等等。我希望这些文件只有在被引用时才能工作,而且没有人可以直接访问它们。请问有什么方法可以做到这一点吗?
以下是两种你可以尝试的选择:
<?php
/**
* Returns true if current file is included
*/
function isIncluded() {
$f = get_included_files();
return $f[0] != __FILE__;
}
if(!isIncluded()) {
// Do some stuff, eg: print some HTML
} else {
// Show 403/error
}
?>
<?php
// You can also use (recommended)
if(__FILE__ !== $_SERVER["SCRIPT_FILENAME"]) {
// this file is being included
}
?>
您也可以选择将文件放置在一个由.htaccess
和Deny from all
保护的目录中,因为PHP可以绕过此项保护,但用户无法。
不将这些脚本放在网站根目录下是一种常见的和最佳实践。你可以将你的包含文件放在其他目录中。
也就是说,你可能会有像这样的目录:
/www
index.php
/includes
header.php
footer.php
在你的index.php
中,你可以随时使用require_once('../header.php');
这比配置Web服务器禁止访问要好。如果你像其他人建议的那样使用.htaccess
文件,那么可能会丢失该配置,移动或被 Web 根目录外的正确配置文件忽略等问题。你不想意外地泄露这些文件。
order deny,allow
deny from all