5

目前我这样做:

在一个文件中,我们称之为file_one.php,我有

define( 'ROOT', realpath( dirname( __FILE__ ) ) );

require_once( ROOTPATH . '/file_two.php' );

然后file_two.php我在顶部有这个:

if ( ! defined( 'ROOT' ) )
    exit;

因此,只有在定义时file_two.php才能访问的内容,这发生在. 如果您尝试直接访问它将无法正常工作,对吗?这种方法有什么缺陷吗?ROOTfile_one.phpfile_two.php

4

2 回答 2

1

就像你说的那样。如果有人直接在浏览器中输入 /../../file_two.php 它就会退出。当文件独立加载时,没有包含,ROOT 没有定义。

请记住,在 PHP 中,一个文件包含其他文件和其他文件,并且最后几乎只有一个文件。因此,如果您的直接访问变量未在检查之前的某处定义,它将不允许访问。

于 2013-02-21T16:17:27.377 回答
1

将 John Conde 的评论转换为答案:

确保无法在浏览器中访问文件的最佳方法是将其放在 webroot 之外。

您应该有一个名为wwwpublic_html类似的文件夹,其中包含您网站的文件。好吧,在包含它的文件夹中,您可以放置​​一个includes文件夹并在其中放置仅脚本访问的文件。这样,它们就完全无法从 Web 访问,但脚本仍然可以访问它们。

于 2013-02-21T16:21:44.563 回答