Z
ZHANK
编程在线教程PHP 教程GET 与 POST 请求
表单与请求

GET 与 POST 请求

$_GET/$_POST 接收参数、$_REQUEST、filter_input 过滤

GET 与 POST 请求

Web 的核心就是请求和响应。GET 是从服务器拿数据,POST 是向服务器发数据。PHP 通过超全局变量接收二者。

学完本章你将: 掌握 $_GET/$_POST、$_REQUEST、filter_input 过滤。


GET —— URL 传参

php
<?php
// URL: /search.php?keyword=php&page=2
$keyword = $_GET['keyword'] ?? '';
$page = (int)($_GET['page'] ?? 1);

echo "搜索:$keyword,第 $page 页";

// GET 的特点:
// - 参数在 URL 中可见
// - 有长度限制(约 2048 字符)
// - 适合搜索、筛选、分页

POST —— 表单提交

php
<?php
// 表单 method="POST" 提交的数据
$username = $_POST['username'] ?? '';
$password = $_POST['password'] ?? '';

// POST 的特点:
// - 数据在请求体中,URL 不可见
// - 没有长度限制
// - 适合登录、注册、文件上传

安全过滤输入

php
<?php
// ❌ 直接使用原始输入——不安全
$id = $_GET['id'];

// ✅ 使用 filter_input
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if ($id === false || $id === null) {
    die("无效的 ID");
}

$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
$url = filter_input(INPUT_GET, 'url', FILTER_SANITIZE_URL);

// 常用过滤
// FILTER_VALIDATE_INT    → 验证整数
// FILTER_VALIDATE_EMAIL  → 验证邮箱
// FILTER_VALIDATE_URL    → 验证 URL
// FILTER_SANITIZE_STRING → 去除标签(已废弃,用 htmlspecialchars)

⚠️ 永远不要信任用户输入。 来自 $_GET/$_POST 的数据在输出到 HTML 前必须用 htmlspecialchars() 转义。