Skip to content

请求与响应

PHP 提供了超全局变量来处理 HTTP 请求和响应。

超全局变量

$_GET

获取 URL 参数:

php
<?php
// URL: http://example.com?name=John&age=25
$name = $_GET['name'];  // "John"
$age = $_GET['age'];    // "25"

// 安全获取(带默认值)
$name = $_GET['name'] ?? 'Guest';
?>

$_POST

获取 POST 数据:

php
<?php
// 表单提交
$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';

// 处理表单
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 处理 POST 请求
}
?>

$_REQUEST

包含 GET、POST 和 COOKIE 数据(不推荐使用,安全性较低)。

$_SERVER

服务器和执行环境信息:

php
<?php
$_SERVER['REQUEST_METHOD'];    // 请求方法
$_SERVER['REQUEST_URI'];       // 请求 URI
$_SERVER['HTTP_HOST'];         // 主机名
$_SERVER['REMOTE_ADDR'];       // 客户端 IP
$_SERVER['HTTP_USER_AGENT'];   // 用户代理
?>

处理 JSON 请求

php
<?php
// 接收 JSON 数据
$json = file_get_contents('php://input');
$data = json_decode($json, true);

// 返回 JSON 响应
header('Content-Type: application/json');
echo json_encode(['status' => 'success', 'data' => $data]);
?>

文件上传

php
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
    $file = $_FILES['file'];
    
    if ($file['error'] === UPLOAD_ERR_OK) {
        $tmpName = $file['tmp_name'];
        $name = $file['name'];
        $size = $file['size'];
        
        // 移动文件
        move_uploaded_file($tmpName, "uploads/$name");
    }
}
?>

响应处理

设置响应头

php
<?php
// 内容类型
header('Content-Type: text/html; charset=utf-8');
header('Content-Type: application/json');

// 重定向
header('Location: http://example.com');

// 缓存控制
header('Cache-Control: no-cache, must-revalidate');
?>

输出内容

php
<?php
// echo
echo "Hello World";

// print
print "Hello World";

// printf
printf("Hello, %s", $name);
?>

下一步

学习 Cookie 与 Session → Cookie 与 Session

基于 VitePress 构建