问题标签 [superglobals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 我应该将超全局变量存储为包装类的属性还是应该直接访问它?
我想为 and 创建一个包装器Session
,Request
这样我就不必直接访问 PHP 超全局变量。我意识到,如果我为超全局变量创建一个包装器并使用它们,那么对我的应用程序进行单元测试会更容易,因为可以模拟包装器类。
在尝试创建我的包装类时,我研究了一些示例包装类。其中一些在初始化时将超全局存储为类属性:
我的问题:有什么特别的原因为什么在创建包装类时我们将超全局存储为类的属性而不是直接访问它们?将上面的代码与此代码进行对比:
IMO,既然包装类无论如何都会被嘲笑,为什么还要将超全局变量存储为类属性呢?有这么多人这样做的特殊原因吗?我应该将超全局变量作为属性存储在它们的包装器中而不是直接访问它吗?
感谢您的任何意见。
php - codeigniter 的重定向功能有问题
这可能是一个 n00b 话题,但无论如何,我在这个 bug 上度过了一段相当困难和奇怪的时光。基本上,我正在为显示表单的页面开发一种控制器方法。基本上,我通过 var 使用 codeigniter 的$this->input->post
函数转储表单输入来调试表单的提交数据,如下所示:
每隔一天这都有效,但今天我发现当我将发布变量转储到浏览器时,它会返回 false,就好像它们没有值一样,即使它们在我提交表单时确实有值。然后我尝试通过 PHP 的 POST 超全局数组直接访问变量,如下所示:
并且它也返回空,所以我尝试像这样转储整个帖子数组:
尽管我填写了整个表格,但它也是空的。尽管如此,我的 MySQL 数据库中的记录正在更新(这意味着即使我的 $_POST 变量显示为空,表单也在提交)。
此外,我推断通常,如果我在重定向函数调用之前在控制器函数中转储变量,它应该给我一个“标头已发送”错误,但它从来没有。它只是将我重定向到假定的成功页面,而不是转储我的变量。
因此,在大约 2 小时内,我认为我的 POST 数据没有被发送并重新检查代码是否有错误,并开始一一注释掉语句,直到我能在脚本中找到罪魁祸首语句。
最后,我注释掉了一段设置成功消息和重定向的代码,如下所示:
然后脚本才开始使用codeigniter的$this->input->post
函数以及$_POST
超全局数组转储我以前的所有变量转储。
好吧,如果脚本确实重定向了我,尽管变量转储在发送标头之前发送输出,那么我可以看到为什么 $_POST 变量会显示为空。
那么真正的问题是,尽管我在发送标头之前发送了输出,为什么脚本仍然会重定向?有没有人经历过这个?
对此的任何帮助将不胜感激。
编辑:关于加载视图,我的脚本的简化版本看起来像调试 var dump 语句:
php - 覆盖超级全局 $_SESSION 是否安全?
$_SESSION
用专门的会话对象覆盖超全局是否安全?
php - 检查 $_COOKIE 值是否为空
我将 cookie 分配给变量:
我如何检查是否$user_cookie
收到了一些价值?
我应该使用if (empty($user_cookie))
还是其他?
php - 如何区分环境是否是虚拟主机?
我在这里有这段代码:
并且 APP_URL 用于整个 HTML 模板。问题是 - 配置需要尽可能通用,因此在切换环境时要做的事情更少。
现在,当我为我的项目配置了虚拟主机时,它的工作原理是这样的,但是当它不是虚拟主机时,它有点像 localhost/myproject/ - $config['SUBFOLDER'] 必须手动设置为/我的项目/
如何以编程方式执行此操作?
php - 在 PHP 文件中存储我自己的超级全局变量?
我正在建立一个有数百页的网站。这些页面中的每一个都有一个标题,例如:
世界上最好的网页 - Stackoverflow
如上所述,每个页面都将在页面标题之后具有站点名称。
我想将站点名称存储在某种全局变量中。
这样我就不需要手动更改数百个页面标题,以防网站名称更改。
现在我可以将名称存储在一个文件中并使用 require_one 来包含它。
但我希望有一个更优雅的解决方案。这允许我将标题存储在 php 文件中,并以与调用 PHP GET 等相同的方式调用它。
php - 在 PHP 中创建一个 php 文件
我正在为我的一个项目开发安装程序,安装程序将创建一个配置文件。
我让它正常工作 99.99%,但在那个文件中我想要检查以确保黑客无法直接访问它,并且该代码使用 $_SERVER 超级全局,在每次运行时,它都会被 php 解析,因此它会破坏我正在尝试的逻辑。
有谁知道我可以让超全球在没有解析的情况下保持原样,还是我应该重新考虑我的逻辑并将其添加到其他地方?
对于那些可能想查看代码的人,这里是:
php - 超全局 $_GET 中是否保证键值对的顺序?
$_GET 超全局变量中键值对的顺序是否保证与在请求的 URL 中接收字段值对的方式一致?
例如,给定 Web 服务器收到的 URL 请求:
...和这段代码:
...结果是否始终保证为:
我没有在 $_GET 或 superglobals 的 PHP 文档中看到任何关于键顺序的提及。这使我相信不能依赖键值对的顺序。
有谁知道订单是否有保证的一致性,或者更好地指出规范/文档来澄清这一点?
php - $_SERVER['SERVER_ADDR'] 是否总是设置?
总是$_SERVER['SERVER_ADDR']
设置?
我应该检查 isset() 还是没有必要?
我需要获取该站点的 IP,以便确定它是否为 127.0.0.1/localhost
php - 当上传的文件超过 post_max_size php 时如何显示错误?
post_max_size
上传的文件超过php时如何显示错误?
当我超过post_max_size
我从 php.net 得到这个,但我不明白,也不知道该怎么做,
如果 post 数据的大小大于 post_max_size,则 $_POST 和 $_FILES 超全局变量为空。这可以通过多种方式进行跟踪,例如通过将$_GET 变量传递给处理数据的脚本,即,然后检查是否设置了$_GET['processed']。
这是我的表格