防止直接访问php文件

时间:2011-08-03 17:34:36

标签: php apache

以下是我的文件结构示例。

/index.php
/inc
/inc/file1.php
/inc/file2.php
/inc/file3.php
/search.php

index.php包括()file1.php,file2.php和file3.php。  我希望它们只能通过index.php访问。

最优雅的解决方案是什么?

由于

3 个答案:

答案 0 :(得分:7)

将它们置于文档根目录之外:

/documentroot/index.php
/inc/file1.php
/inc/file2.php
/inc/file3.php

因此,无论如何都无法直接访问它们。

答案 1 :(得分:2)

在index.php中,你可以像这样定义一个常量:

define('RESTRICTED',1);

然后在其他页面中,您将其放在<?php

之后
if(!defined('RESTRICTED'))exit('No direct script access allowed!');

当直接访问其他页面时,上面的代码看到RESTRICTED尚未设置,因此它将退出。

答案 2 :(得分:1)

制作.htaccess文件并将其放入inc文件夹

<Files .htaccess>
order allow,deny
deny from all
</Files>

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

或将其置于您想要拒绝的文件顶部

if(strrchr($_SERVER['PHP_SELF'],'/')=='/file_name.php'){die;} // not good for ajax include