PHP超级全局变量

PHP 中的超级全局变量(Superglobals)是 PHP 4.1.0 引入的一个特性,它们在脚本的全部作用域中都是可用的。这意味着一旦一个脚本被载入,这些变量就可以在脚本的任何地方被访问,无论是在函数内部还是外部。PHP 提供了几个预定义的超级全局变量,用于收集来自不同来源的信息,如用户输入、服务器信息、会话信息等。

常见的 PHP 超级全局变量

  1. $GLOBALS

    • $GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键(key)。
    • 示例:$GLOBALS['variableName'] 访问全局变量 variableName
  2. $_SERVER

    • $_SERVER 是一个包含了诸如头信息(header)、路径(path)和脚本位置(script locations)的数组。这个数组由 web 服务器创建。
    • 示例:$_SERVER['SERVER_NAME'] 获取当前运行脚本所在服务器的主机名。
  3. $_GET

    • $_GET 通过 URL 参数传递给当前脚本的变量的数组。
    • 示例:如果 URL 是 http://example.com/test.php?name=John&age=30,则 $_GET['name'] 会是 John$_GET['age'] 会是 30
  4. $_POST

    • $_POST 通过 HTTP POST 方法传递给当前脚本的变量的数组。
    • 常用于表单数据的提交。
    • 示例:如果表单包含 nameage 字段,则 $_POST['name']$_POST['age'] 将分别包含这些字段的值。
  5. $_REQUEST

    • $_REQUEST 包含了 $_GET$_POST$_COOKIE 的内容。它可以用来收集通过 GET 和 POST 方法发送的数据以及通过 COOKIE 发送的数据。
    • 注意:出于安全考虑,不建议在生产环境中使用 $_REQUEST,因为它可能会暴露不应该通过 GET 发送的敏感信息。
  6. $_SESSION

    • $_SESSION 变量用于存储关于用户会话(session)的信息。
    • 会话变量存储在服务器上,通过 PHP 的 session 管理来跟踪用户的会话。
    • 示例:$_SESSION['username'] = 'JohnDoe'; 存储用户名到会话中。
  7. $_FILES

    • $_FILES 是一个包含了通过 HTTP POST 方法上传的文件的数组。
    • 数组的每个元素都是一个关联数组,包含了文件的名称、类型、大小、临时文件名以及是否上传成功等信息。
    • 示例:$_FILES['file']['name'] 获取上传文件的原始名称。
  8. $_COOKIE

    • $_COOKIE 是一个包含了通过 HTTP Cookies 发送到脚本的变量的数组。
    • 示例:如果有一个名为 user 的 cookie,则 $_COOKIE['user'] 会包含该 cookie 的值。
  9. $_ENV

    • $_ENV 是一个包含了服务器端环境变量的数组。这些变量是环境配置的一部分。
    • 注意:不是所有的服务器都会设置这些变量,或者服务器管理员可能会阻止访问某些环境变量。
  10. $_HTTP_RAW_POST_DATA

    • $_HTTP_RAW_POST_DATA 包含了原始的 POST 数据。默认情况下,此特性在 PHP 5.6.0 中已废弃,并在 PHP 7.0.0 中移除。
    • 如果需要处理原始 POST 数据,应考虑使用 php://input 流或其他方法。

使用超级全局变量的注意事项

  • 安全性 :特别是处理 $_GET$_POST$_COOKIE 时,要注意验证和清理输入数据,以防止跨站脚本(XSS)攻击和其他安全漏洞。
  • 性能:虽然超级全局变量很方便,但过度使用或不当使用可能会对性能产生负面影响。
  • 作用域:超级全局变量在脚本的任何地方都是可用的,但应注意不要在不适当的地方(如全局命名空间中)修改它们,以避免意外的副作用。

原文链接: PHP超级全局变量

红客社区:客户端下载 - 红客网络编程与渗透技术

相关推荐
为什么每天的风都这么大35 分钟前
Vscode/Code-server无网环境安装通义灵码
ide·vscode·阿里云·编辑器·ai编程·code-server
阳光帅气男孩1 小时前
PhpSpreadsheet导出图片
php
猫爪笔记2 小时前
前端:HTML (学习笔记)【1】
前端·笔记·学习·html
周全全2 小时前
Spring Boot + Vue 基于 RSA 的用户身份认证加密机制实现
java·vue.js·spring boot·安全·php
web3探路者2 小时前
深入探索Solana链上的Meme生态:创新、潜力与挑战#区块链开发#dapp开发
web3·区块链·团队开发·dapp开发·区块链技术·链游开发·交易所开发
Mr.Pascal3 小时前
刚学php序列化/反序列化遇到的坑(攻防世界:Web_php_unserialize)
开发语言·安全·web安全·php
建群新人小猿3 小时前
会员等级经验问题
android·开发语言·前端·javascript·php
爱上语文4 小时前
HTML和CSS 表单、表格练习
前端·css·html
ahadee4 小时前
蓝桥杯每日真题 - 第19天
c语言·vscode·算法·蓝桥杯