php - $HTTP_XXX_VARS 与 PHP 中的 $_XXX 不同吗?

标签 php

下面的代码是否有意义?:

$t_server = isset( $_SERVER ) ? $_SERVER : $HTTP_SERVER_VARS;

据我了解,$HTTP_XXX_VARS$_XXX 相同,只是 $HTTP_XXX_VARS 已弃用。因此,我不明白上面的代码。

$HTTP_XXX_VARS 未被弃用的旧系统中是否存在两个变量不同的情况?

最佳答案

$HTTP_SERVER_VARS$_SERVER是不同的变量(如果两者都已设置)。它们最初包含相同的值,但不同的是,脚本对其中一个所做的更改不会影响另一个。

superglobals ($_GET$_POST$_SERVER 等)在 PHP 4.1 中引入。长命名变量($HTTP_GET_VARS$HTTP_SERVER_VARS 等)在 PHP 4.1 中已弃用,并在 PHP 5.4.

PHP 5.0 引入了配置设置 register_long_arrays用于告诉 PHP 创建(或不创建)旧的长名称变量($HTTP_GET_VARS 和其他)。该设置在 PHP 5.3 上已弃用,并在 PHP 5.4 上完全删除(连同长名称数组)。

如您所见,在 PHP 4.0 和 PHP 5.4 之间,程序员可以使用这些变量的一个或两个版本。

行:

$t_server = isset( $_SERVER ) ? $_SERVER : $HTTP_SERVER_VARS;

利用新的超全局变量 $_SERVER,如果可用(在 PHP >= 4.1 上),但它会退回到旧的 $HTTP_SERVER_VARS 如果它在旧的 PHP 上运行。它可能是几年前编写的,当时 PHP 4 仍在许多服务器上使用。

除了遇到PHP 4.0这种不太可能发生的情况外,您可以安全地将上面的行更改为:

$t_server = $_SERVER;

或者到处使用 $_SERVER 而不是 $t_server

关于php - $HTTP_XXX_VARS 与 PHP 中的 $_XXX 不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29989005/

相关文章:

javascript - 从另一台服务器安全地从 JS 发送到 PHP

PHP/MySQL-存储到MySQL表时代码被截断

php - 使用 Guzzle 将文件发布到 Web 服务

javascript - 如何从IP地址判断向量是否为公司?

php - 付款单上的自定义自动增量

php - 嵌套数组验证 laravel

php - 更快地将记录从 excel 文件 Laravel 5 插入数据库

php - PDOException : could not find driver when using phpunit

php - 链接表和 SQL SELECT 查询

php - 显示无前导零的无符号 zerofill 自动增量值