【问题标题】:PHP check for global variable before loading pagesPHP 在加载页面之前检查全局变量
【发布时间】:2016-06-21 19:19:53
【问题描述】:

我希望目录中的所有 PHP 页面仅在 PHP 变量存在且有效时才加载。我知道如何手动在单个甚至多个页面上执行此操作,但我希望这会自动发生在目录中的所有页面上。是否可以将某种类型的设置放入 php.ini 文件中,以允许我执行此操作。

【问题讨论】:

  • 这是框架的一个优势。在框架中,如果不加载基本文件集,您永远不会真正加载其他文件。如果您不使用它,我建议您至少在这方面模仿它们。使您的 php 文件都包含一个文件。在该文件中,确保所有逻辑都发生在其他任何事情之前。这也很棒,因为您可以确保您的标头永远不会被发送到多个地方。
  • 没有办法只为一个目录执行此操作。有一个全局 auto_prepend_file 选项,但它适用于所有目录中的所有脚本。
  • 我要限制访问的目录充满了来自第 3 方的文件。我无法控制他们是否使用框架。不过,我 100% 同意你的评论,如果这对我来说很容易就好了。我需要尽可能避免接触代码。
  • @Barmar 如果目录由子域表示怎么办?我有一个主域,我想不理会,但我的子域上的所有内容实际上都是它自己的目录。
  • 我认为这应该可行,因为每个域都可以有自己的php.ini

标签: php variables directory global-variables ini


【解决方案1】:

只需向每个页面添加一个 if 语句,检查是否设置了会话变量。为什么要编辑ini文件?

【讨论】:

  • 我想阻止对整个目录的访问。有数千个文件,添加一个 if 语句来检查每个文件的变量是不切实际的。
  • @MitchMitchell 如果不应该直接访问这些文件(浏览器、另一个脚本 - ajax 等),那么您可以考虑添加 .htaccess (或类似方法,如果您不使用阿帕奇)?
  • @OliverMaksimovic 他们应该被访问,但只有当全局变量具有正确的值时。我不想完全切断访问权限
【解决方案2】:

您可以使用 htaccess 来完成。在要保护的目录中创建一个 htaccess 文件,其中包含以下代码。

.htaccess 文件

php_value auto_prepend_file "/path/globalchecker.php"

globalchecker.php

<?php 
 if($some_global_value !== 'some value')
    exit;

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多