有没有办法阻止请求.php文件?

时间:2010-07-16 13:48:54

标签: php

我有某些文件,例如header.phpfooter.php。我想禁止从浏览器地址栏直接请求这些文件。

如果我在代码中有include 'file.php',那么它应该包括在内,但是如果它是直接请求的,我不希望它被显示,因为它没有用处。可能吗?

提前致谢:)

3 个答案:

答案 0 :(得分:9)

你可以按照可取的顺序(从“好”到“有点作品”)做任何这些事情:

  • 在您的网络根目录之外创建它们。例如,假设/somepath/example.com/htdocs/映射到http://example.com/

/somepath/example.com/htdocs/index.php
/somepath/example.com/includes/header.php
/somepath/example.com/includes/footer.php

的index.php:

<?php require_once('../includes/header.php') ?>
  • 通过.htaccess阻止访问

<Files (header|footer).php>
Deny from all
</Files>

  • (如果其他所有方法都失败了),在主文件中设置一个常量,如果没有找到则静默死亡。

的index.php:

<?php define('INCLUDED_FROM_MAIN_FILE_EXAMPLE_COM',true) ?>

的header.php:

<?php if (!defined('INCLUDED_FROM_MAIN_FILE_EXAMPLE_COM')) { die(); }

答案 1 :(得分:2)

防止这种情况的一种常见方法是在index.php(或任何你称之为)中创建一个定义并检查该定义。

这样你就可以在index.php

中得到类似的内容
define('USING_INCLUDE', 1);

这在你的footer.php

if(!defined('USING_INCLUDE')){
    header('HTTP/1.1 403 Forbidden');
    die();
}

答案 2 :(得分:0)

为什么要将它们重命名为header.php.inc?然后设置

<Files *.inc>
    Order allow,deny
    Deny from all
</Files *.inc>

我认为这很标准。