PHP的限制包括()

时间:2010-01-15 03:31:06

标签: php xhtml include restriction

嘿伙计们,我将一些XHTML与PHP分开,将XHTML放入一个单独的文件中,然后在PHP脚本中使用PHP的include()函数。

这非常合适,但是,如果用户知道地址,他们仍然可以直接访问.html文件。他们无法真正做到这一点,但我宁愿不显示。

我以前看过一些脚本使用某种形式的引用来检查,这是我要做的就是添加一些基本的(通知我说'基本')限制以防止它被通过直接访问来查看?

谢谢!

澄清:我忘了提到我想在PHP中执行此操作,因此没有Web服务器配置(将文件移出document-root,配置web-server以禁止访问等等。)。我认为这里最合乎逻辑的选择是使用define()常量检查,这实际上确实是我在其他我忘记过的脚本中看到的,正如我在帖子中所概述的那样。我意识到这可能不是最好的解决方案,但鉴于可以访问的html文件没有特别的价值,define()常量应该足够了。谢谢,我很感激你的回复!

6 个答案:

答案 0 :(得分:3)

只需将其移出文档根目录即可。如果PHP处于安全模式,这将无效。

答案 1 :(得分:3)

更改您的网络服务器配置以禁止访问该文件?

答案 2 :(得分:3)

不,做这样的事情:

<强>的index.php:

<?php

define('ALLOW_INCLUDE', true);

include('other.php');

?>

<强> other.php:

<?php

if (defined('ALLOW_INCLUDE') === false) die('no direct access!');

// your code

?>

答案 3 :(得分:3)

如果您目前将所有文件(例如index.php)放在/something/public_html/中,则需要将文件移至/something/。这样用户就无法访问这些文件。

/public_html/称为您的文档根目录。该文件夹映射到example.com,基本上网站从那里开始。如果您将文件移动到网站启动的上方,则没有人可以通过浏览器访问这些文件。

正如Ignacio所说,如果启用了安全模式,这将不适用于include

其他方法是在文件顶部放置一些内容

if(!defined("RUNNING_SCRIPT"))
    die("No Direct Access Allowed");

然后在你的PHP文件中放

 define("RUNNING_SCRIPT", true);

如果未定义RUNNING_SCRIPT,则表示他们正在直接访问它,并且会阻止加载页面。这只适用于PHP在.html文件上运行的情况。

您还可以使用.htaccess文件禁止访问该文件夹。

答案 4 :(得分:1)

将此作为第一行是个好主意。

您也可以使用.htaccess或删除index.html页面作为后备。

<?php defined('SOME_CONSTANT_GLOBAL_TO_YOUR_APP') or die('Access denied.'); ?>

答案 5 :(得分:0)