为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕田峪7331174 2022-07-22 19:23:16
嗨,我正在尝试为我想要构建的网站制作部件,它会像:header.php、footer.php 等...我希望这些文件只有在我包含它并且没有人可以直接访问它们时才能工作。请问有什么办法吗?
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

您可以尝试以下两种选择:


<?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

}


?>

您也可以选择将文件放入受 a.htaccess和 a保护的目录中,Deny from all因为 PHP 可以绕过它,但用户不能。


查看完整回答
反对 回复 2022-07-22
?
慕森卡

TA贡献1806条经验 获得超8个赞

在您的 Web 根目录中根本不包含这些脚本是一种常见且最佳的做法。您可以将您的包含放在其他地方的目录中。


也就是说,您可能有这样的目录:


/www

  index.php

/includes

  header.php

  footer.php

在你的index.php,你总是可以做require_once('../header.php');


这比将您的 Web 服务器配置为禁止访问要好。如果您按照其他人的建议使用.htaccess文件,则该配置可能会丢失、移动、被 webroot 之外的正确配置文件忽略等。您不希望意外泄露这些文件。


查看完整回答
反对 回复 2022-07-22
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

您可以创建一个 .htaccess 文件并将其放在无法直接执行的独立目录(例如“common”)中。此 .htaccess 文件应包含以下指令:


order deny,allow

deny from all


查看完整回答
反对 回复 2022-07-22
  • 3 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号