我正在为自己开发一个网站,我只是想知道如何阻止直接访问包含 header.php 和 footer.php 等文件。这些文件只应包含在 index.php 等页面中,或者使用<?php include(''); ?>
调用的其他页面。我应该通过PHP来做吗?如何编辑 .htaccess 文件还是有其他方法吗?
答案 0 :(得分:4)
答案 1 :(得分:0)
我提出了3条建议,既然你没有提供太多建议,我会给你一个详细说明。
正如@Dragon所说,当您通过文件系统而不是通过HTTP请求使用include()
读取时。您可以检查HTTP动词($ _REQUEST,$ _GET,$ _POST)并拒绝显示内容或伪造401.
<?php
if(isset($_REQUEST) || isset($_GET) || isset($_POST)){
header("HTTP/1.0 404 Not Found");
die();
}
// Do the needed
?>
我会让你自己弄明白这个问题。
答案 2 :(得分:0)
如果您的服务器是Linux,那将是完美的,因为那样您可以遵循Dagon建议将文件放在Web根目录之外。
Web根当然是包含外部世界要访问的文件的基本文件夹。在许多系统上,这是public_html文件夹。
在安装了WHM / cpanel的系统上,您可能拥有一个特殊的用户帐户,该帐户的根目录(可以存储任何内容)位于整个系统的/ home / user。这可以通过使用cpanel附带的文件管理器实用程序来查看。在该/ home / user文件夹中,您可以找到以句点开头的配置文件和文件夹以及public_ftp和public_html文件夹。
在/ home / user文件夹中,您可以放置您不希望世界直接访问的PHP文件。然后在public_html中,(可在/ home / user中访问),可以将包含include语句的index.php文件放到“protected”文件中。在index.php中,您可以使用以下语句:
include "../file-to-include.php";
只需确保管理员已将/ home / user文件夹的所有者设置为您登录的用户名,或者在尝试访问该文件时可能会收到拒绝访问的邮件。在一个体面的cpanel设置上,最后一步已经完成了。