2012-07-12 115 views
0

可能重复:
Preventing direct access to php files阻止访问文件

我要阻止对某些文件的直接访问,使他们只能通过PHP通过includerequire使用。

我做的每个文件的第一行是什么:

<?php 
if(stristr(__FILE__,substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'],"/")+1))){ 
    header("HTTP/1.0 404 Not Found"); 
    exit; 
} 
?> 

是,这样做的一个很好的方式,还是有更好的办法?

谢谢。

+0

这不是真的,那些关于.htaccess文件。另外我要求确认我使用PHP自己的做法,再次**不** ** htaccess或与服务器相关的配置。 – Francisc 2012-07-12 10:42:04

+0

我明确标记为重复的问题没有提及.htaccess文件。在这个问题上接受的答案没有提及.htaccess文件(对它的评论确实存在,但是它对已删除评论的回复有异议)。你问“有没有更好的方法” - 通用的“我该怎么做?”问题通常意味着“什么是最好的方式”。如果你只是想要一个代码审查,那么你的问题是本地化的StackOverflow,你应该问[代码审查](http://codereview.stackexchange.com/)。 – Quentin 2012-07-12 10:51:54

+0

我不知道如何看到你标记为“完全重复”的问题,但是来自Quetin的链接是关于服务器配置的问题:将文件移动到公共HTML文件夹之外。我试图了解我发布的PHP代码是否适合拒绝访问,如果不是的话。简单的问题,简单的答案(未来)。回顾一下:*我正在寻找一个PHP解决方案。* – Francisc 2012-07-12 10:54:17

回答

1

一个更好的选择是将文件移出网站公共区域到私人目录,然后使用set_include_path(或等效的服务器配置)允许includerequre找到它们。

+0

为什么这样更好? PHP可以被欺骗以允许访问?或者你的意思是只比将这些代码行添加到每个文件更简单?谢谢。 – Francisc 2012-07-12 11:08:03