可能重复:
如何阻止PHP文件访问Global Access

对于我正在从事的项目,我需要(“ xxxx.php”); 将我网站的某些部分包含到我的网站中。

例如,我有header.php,而我的网站只使用一个简单的require(“ header.php”)展示给全世界。

现在,如何使页面包含header.php的内容,但是如何使用户无法通过它访问它

http://mywebsite.com/header.php

===============>>#1 票数:4 已采纳

将文件放在Web服务器的DocumentRoot之外的某个位置。

===============>>#2 票数:3

设置网络服务器,以便:

  1. 您有一个公共目录,您的可访问文件所在的目录,例如静态媒体+ index.php等。

  2. 有一个资源目录,该目录位于您的公用文件夹之外。

  3. 设置网络服务器以从公共目录提供服务

  4. 包括这样:

    require(“ ../ private / header.php”);

===============>>#3 票数:3

您可以在索引文件中定义一个常量,然后在header.php检查,以header.php该常量存在。

// check if the header.php file is accessed directly
if (!define('MY_SECRET_CONSTANT')) {
    exit();
}

===============>>#4 票数:1

正如您从答案中看到的:有无数种方法可以执行此操作,这是两个非常简单的方法,不需要您更改目录结构:

index.php和其他包含header.php文件中:

define('INCLUDED', true);
require 'header.php';

header.php

if(!defined('INCLUDED')){
  die('Forbidden'); // or you could redirect to home ... whatever you want :)
}

或者,您可以禁止通过.htaccess访问。 因此,您甚至不必触摸代码:

<Files header.php>
  order allow,deny
  deny from all
</Files>

如果您的所有文件都在一个目录中,则只需拒绝对该目录的访问即可。

===============>>#5 票数:1

您可以使用htaccess来确保不查看特殊文件。 通过virtualhost条目可以实现相同的目的。

最好的做法是创建一个/ web文件夹,该文件夹是您的应用程序的“根”目录,并存储应可访问的所有内容。 其他文件夹可以放在其他任何地方,并包含在脚本中,以供用户访问。

您的结构可能如下所示:

/var/www/mySite/inc/header.php
/var/www/mySite/web/index.php (including ../inc/header.php)
/var/www/mySite/web/css/style.css

您的apache虚拟主机如下所示:

<VirtualHost *:80>
    ServerName www.mysite.com

    # Basic stuff
  DocumentRoot "/var/www/mySite/web"
    DirectoryIndex index.php
    <Directory "/var/www/mySite/web">
        AllowOverride All
        Allow from All
    </Directory>
</VirtualHost>

现在inc文件夹无法通过您的域进行访问,因为您的Web文件夹是每个来自url的人的根。 另一方面,您的脚本当然可以比其更低的导航并且包括来自任何地方的脚本。

  ask by InVert translate from so

未解决问题?本站智能推荐: