可能重复:
How to hinder PHP files to Global Access执行脚本,而不是让用户访问它
对于一个项目我的工作,我需要( “xxxx.php”);将我网站的某些部分加入我的网站。
例如,我有header.php,我的网站只是使用一个简单的require(“header.php”)向全世界显示。
现在,我该如何使它所以页面包括header.php中的内容,但要因此用户无法通过
http://mywebsite.com/header.php
可能重复:
How to hinder PHP files to Global Access执行脚本,而不是让用户访问它
对于一个项目我的工作,我需要( “xxxx.php”);将我网站的某些部分加入我的网站。
例如,我有header.php,我的网站只是使用一个简单的require(“header.php”)向全世界显示。
现在,我该如何使它所以页面包括header.php中的内容,但要因此用户无法通过
http://mywebsite.com/header.php
访问它把文件某处的DocumentRoot的外网络服务器。
有时,使用共享主机时,您的主机不会为您提供DocumentRoot外部的目录。如果是这种情况,你可以使用'.htaccess' - 我在我的答案中加入了一个例子。 – middus
设置网络服务器,以便:
你有一个公共目录,其中可访问的文件驻留,说静止媒体+的index.php等
有一个资源目录,即在您的公共文件夹之外。
设置Web服务器从公共目录服务
包括像这样:
要求( “../私人/ header.php文件”);
你可以在你的索引文件定义常量,然后在header.php
你会检查所以这个常数存在。
// check if the header.php file is accessed directly
if (!define('MY_SECRET_CONSTANT')) {
exit();
}
你可以从答案看:有一个极大的方式来做到这一点,这里的两位非常简单的人,不需要你改变你的目录结构:
在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>
如果包括都在一个目录下,你可以简单地拒绝访问该目录。
您可以使用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的所有人。另一方面,您的脚本当然可以低于此值,并且可以在任何地方包含脚本。
我更喜欢[这个答案](http://stackoverflow.com/a/6796718/451969)重复的问题。将文件从Web可访问路径中移出,或者使其所在的目录需要进行身份验证。 –
您应该指定您使用的是哪个Web服务器。多数人认为阿帕奇,但情况可能并非如此。 –
我目前正在使用本地主机服务器(XAMPP),所以我实际上使用Apache。 – InVert