嗨,我试图为我想构建的网站制作零件,它会像: 页眉.php、页脚.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可以绕过它,但用户不能。
在Web 根目录中根本不包含这些脚本是一种常见且最佳实践。 您可以将包含放在其他位置的目录中。
也就是说,您可能有如下目录:
/www
index.php
/includes
header.php
footer.php
在你的index.php
,你总是可以做require_once('../header.php');
这比将 Web 服务器配置为禁止访问要好。 如果您按照其他人的建议使用.htaccess
文件,则该配置可能会丢失、移动、被 webroot 之外的正确配置文件忽略等。 您不想意外泄露这些文件。
您可以创建一个 .htaccess 文件并将其放在独立目录中(例如。"共同"(,不能直接执行。 此 .htaccess 文件应包含以下指令:
order deny,allow
deny from all