防止直接访问 php 文件,但允许包含它

嗨,我正在尝试为我想要构建的网站制作部件,它会像:header.php、footer.php 等...我希望这些文件只有在我包含它并且没有人可以直接访问它们时才能工作。请问有什么办法吗?



慕田峪7331174
浏览 175回答 3
3回答

繁华开满天机

您可以尝试以下两种选择:<?php/**&nbsp;* Returns true if current file is included&nbsp;*/function isIncluded() {&nbsp; &nbsp; $f = get_included_files();&nbsp; &nbsp; return $f[0] != __FILE__;}if(!isIncluded()) {&nbsp; &nbsp; // Do some stuff, eg: print some HTML} else {&nbsp; &nbsp; // Show 403/error}?><?php// You can also use (recommended)if(__FILE__ !== $_SERVER["SCRIPT_FILENAME"]) {&nbsp; &nbsp; // this file is being included}?>您也可以选择将文件放入受 a.htaccess和 a保护的目录中,Deny from all因为 PHP 可以绕过它,但用户不能。

慕森卡

在您的 Web 根目录中根本不包含这些脚本是一种常见且最佳的做法。您可以将您的包含放在其他地方的目录中。也就是说,您可能有这样的目录:/www&nbsp; index.php/includes&nbsp; header.php&nbsp; footer.php在你的index.php,你总是可以做require_once('../header.php');这比将您的 Web 服务器配置为禁止访问要好。如果您按照其他人的建议使用.htaccess文件,则该配置可能会丢失、移动、被 webroot 之外的正确配置文件忽略等。您不希望意外泄露这些文件。

回首忆惘然

您可以创建一个 .htaccess 文件并将其放在无法直接执行的独立目录(例如“common”)中。此 .htaccess 文件应包含以下指令:order deny,allowdeny from all
打开App,查看更多内容
随时随地看视频慕课网APP