php中的预定义变量是什么

发布时间:2021-06-30 16:11:04 作者:chen
来源:亿速云 阅读:170
# PHP中的预定义变量是什么

## 引言

在PHP开发中,预定义变量(Predefined Variables)是PHP内置的特殊变量,它们提供了对服务器环境、用户请求、会话数据等关键信息的直接访问。这些变量在任何作用域中自动可用,无需额外声明。本文将深入探讨PHP中的主要预定义变量及其应用场景。

---

## 一、PHP预定义变量概述

PHP的预定义变量也称为"超全局变量"(Superglobals),它们在脚本的全部作用域中始终可用。以下是PHP 8.x版本中的核心预定义变量:

1. `$_SERVER` - 服务器和执行环境信息
2. `$_GET` - HTTP GET请求参数
3. `$_POST` - HTTP POST请求参数
4. `$_REQUEST` - GET/POST/COOKIE请求的合并数据
5. `$_FILES` - 文件上传数据
6. `$_SESSION` - 会话变量
7. `$_COOKIE` - HTTP Cookies
8. `$_ENV` - 环境变量
9. `$GLOBALS` - 引用全局作用域中的全部变量

---

## 二、主要预定义变量详解

### 1. $_SERVER 变量

包含Web服务器创建的与当前请求相关的信息:

```php
echo $_SERVER['SERVER_NAME']; // 输出服务器名称
echo $_SERVER['REMOTE_ADDR']; // 客户端IP地址
echo $_SERVER['REQUEST_METHOD']; // 请求方法(GET/POST等)

常用键值: - HTTP_USER_AGENT - 用户浏览器信息 - SCRIPT_NAME - 当前脚本路径 - QUERY_STRING - URL查询字符串

2. \(_GET 和 \)_POST

处理表单数据的基础变量:

// 示例URL: page.php?id=123
$id = $_GET['id']; // 获取URL参数

// 处理POST表单
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
}

安全提示:使用前应始终验证和过滤输入数据

3. $_REQUEST 变量

合并了GET、POST和COOKIE数据的数组(注意优先级可通过php.ini配置):

// 不建议在生产环境使用,存在安全隐患
$value = $_REQUEST['param'];

4. $_FILES 变量

处理文件上传时包含以下信息:

$tmp_name = $_FILES['userfile']['tmp_name'];
$name = $_FILES['userfile']['name'];
move_uploaded_file($tmp_name, "uploads/$name");

文件数组包含: - name - 原始文件名 - type - MIME类型 - size - 文件大小(字节) - error - 错误代码

5. $_SESSION 变量

实现跨页面的用户数据持久化:

session_start();
$_SESSION['user_id'] = 123; // 设置会话变量
echo $_SESSION['user_id']; // 获取值

6. $_COOKIE 变量

访问客户端存储的Cookie:

setcookie("username", "John", time()+3600);
echo $_COOKIE['username'];

7. $GLOBALS 变量

引用全局作用域中的所有变量:

$var = "Hello";
function test() {
    echo $GLOBALS['var']; // 输出全局变量
}

三、安全注意事项

  1. 输入验证:所有用户输入都应视为不可信

    $clean_id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
    
  2. 禁用register_globals(PHP 5.4+已移除该特性)

  3. 会话安全

    ini_set('session.cookie_httponly', 1);
    session_regenerate_id(true);
    
  4. 文件上传限制

    // php.ini配置
    upload_max_filesize = 2M
    post_max_size = 8M
    

四、实际应用示例

用户登录系统

// login.php
session_start();
if ($_POST['username'] === 'admin' && $_POST['password'] === 'secret') {
    $_SESSION['authenticated'] = true;
    header('Location: dashboard.php');
}

// dashboard.php
session_start();
if (!isset($_SESSION['authenticated'])) {
    header('HTTP/1.0 403 Forbidden');
    exit;
}

文件上传处理

if ($_FILES['photo']['error'] === UPLOAD_ERR_OK) {
    $allowed = ['image/jpeg', 'image/png'];
    if (in_array($_FILES['photo']['type'], $allowed)) {
        move_uploaded_file($_FILES['photo']['tmp_name'], "uploads/".uniqid().".jpg");
    }
}

五、总结

PHP的预定义变量为开发者提供了便捷的Web编程接口,但需要特别注意:

  1. 理解每个变量的数据来源和生命周期
  2. 始终对用户输入进行严格过滤
  3. 根据场景选择合适的变量(如优先使用\(_POST处理表单而非\)_REQUEST)
  4. 关注PHP版本变化(如PHP 8.0对$_SESSION的修改)

通过合理使用这些预定义变量,可以高效构建安全的PHP Web应用程序。 “`

(注:实际字数为约1100字,可根据需要扩展具体示例或补充说明)

推荐阅读:
  1. 预定义变量的使用(五)
  2. PHP可变变量,预定义变量,综述,$_GET数组

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php

上一篇:PHP中出现内存溢出如何解决

下一篇:Python中如何求对数

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》