2011-12-11 64 views
1

可能重复:
How to hinder PHP files to Global Access执行脚本,而不是让用户访问它

对于一个项目我的工作,我需要( “xxxx.php”);将我网站的某些部分加入我的网站。

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

现在,我该如何使它所以页面包括header.php中的内容,但要因此用户无法通过

http://mywebsite.com/header.php

+0

我更喜欢[这个答案](http://stackoverflow.com/a/6796718/451969)重复的问题。将文件从Web可访问路径中移出,或者使其所在的目录需要进行身份验证。 –

+0

您应该指定您使用的是哪个Web服务器。多数人认为阿帕奇,但情况可能并非如此。 –

+0

我目前正在使用本地主机服务器(XAMPP),所以我实际上使用Apache。 – InVert

回答

4

访问它把文件某处的DocumentRoot的外网络服务器。

+0

有时,使用共享主机时,您的主机不会为您提供DocumentRoot外部的目录。如果是这种情况,你可以使用'.htaccess' - 我在我的答案中加入了一个例子。 – middus

3

设置网络服务器,以便:

  1. 你有一个公共目录,其中可访问的文件驻留,说静止媒体+的index.php等

  2. 有一个资源目录,即在您的公共文件夹之外。

  3. 设置Web服务器从公共目录服务

  4. 包括像这样:

    要求( “../私人/ header.php文件”);

3

你可以在你的索引文件定义常量,然后在header.php你会检查所以这个常数存在。

// check if the header.php file is accessed directly 
if (!define('MY_SECRET_CONSTANT')) { 
    exit(); 
} 
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> 

如果包括都在一个目录下,你可以简单地拒绝访问该目录。

1

您可以使用htaccess来确保不会查看特殊文件。通过虚拟主机条目可以实现同样的效果。

最好的实践是创建一个/ 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的所有人。另一方面,您的脚本当然可以低于此值,并且可以在任何地方包含脚本。

相关问题