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()转义。