php - PHP include() 的限制

标签 php xhtml include restriction

我将一些 XHTML 从 PHP 中分离出来,方法是将 XHTML 放入一个单独的文件中,然后在 PHP 脚本中使用 PHP 的 include() 函数。

这工作得很好,但是,如果用户知道地址,他们仍然可以直接访问 .html 文件。他们真的不能用它做很多事情,但我宁愿它不显示。

我在过去看到一些脚本使用某种形式的引荐来源检查,这是我要添加一些基本(注意我说的是“基本”)限制以防止它被直接访问查看?

谢谢!

澄清:我忘了说我想在 PHP 中执行此操作,因此没有网络服务器配置(将文件移出文档根目录,配置网络服务器以禁止访问等)。我认为这里最合乎逻辑的选择是使用 define() 常量检查,正如我在帖子中概述的那样,这确实是我在其他我忘记的脚本中看到的。我意识到这可能不是最好的解决方案,但考虑到可以访问的 html 文件没有特别的值(value),define() 常量应该足够了。

最佳答案

如果您当前将所有文件(如 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 文件来禁止访问该文件夹。

关于php - PHP include() 的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2069309/

相关文章:

symfony - 包含中的 Twig 绝对路径变量

php - 在 SQL WHERE 语句中使用 session 变量

php - 删除级联不起作用

php - 使用 3D 透视预览打印 Canvas 包装

javascript - Dojo - 需要第 3 方 JS

c++ - 如何在 C++ 程序中包含流程工具?

php - Symfony 安全 : Is there an event when a user is authenticated from the session?

html - float 在两个元素上

html - OS X 的 IE9 和 FF11 有间距问题

javascript - 我制作了一些投票按钮(想想 reddit/digg/等)但是它们在 IE8 以下不起作用