$_get 是超全局数组而非函数,用于获取url查询字符串参数;需用 $_get['key'] ?? default 访问并过滤验证,避免直接输出或拼接sql,注意url编码与安全防护。

PHP 中没有 $_GET函数,$_GET 是一个**超全局数组(superglobal array)**,不是函数。它用于获取通过 URL 查询字符串(query string)传递的参数,比如 example.com?page=2&sort=name 中的 page 和 sort。
如何正确使用 $_GET 获取 URL 参数
直接通过数组下标访问即可,例如:
<?php $page = $_GET['page'] ?? 1; // PHP 7.0+ 空合并运算符,避免未定义索引警告 $sort = $_GET['sort'] ?? 'id'; ?>
注意:直接访问 $_GET['xxx'] 会触发 Notice 警告(如键不存在),推荐用空合并运算符 ?? 或 isset() 判断:
-
$_GET['id'] ?? null—— 存在则取值,否则返回null isset($_GET['id']) ? $_GET['id'] : 'default'-
filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT)—— 更安全,带过滤和验证
URL 参数必须是合法的查询字符串格式
$_GET 只能解析标准 URL 中 ? 后面的部分,且需符合 key=value 格式,多个参数用 & 连接:
- ✅ 正确:
https://site.com/list.php?category=book&page=3→$_GET['category']是'book' - ❌ 错误:
https://site.com/list.php#section2(片段标识符,不会发送到服务器) - ❌ 错误:
https://site.com/list.php?name=张三(中文需 URL 编码,实际应为?name=%E5%BC%A0%E4%B8%89,PHP 会自动解码)
安全提醒:不要直接输出或执行 $_GET 数据
$_GET 来自用户输入,完全不可信。常见风险包括 XSS、SQL 注入、路径遍历等:
- 输出到 HTML 前用
htmlspecialchars($val, ENT_QUOTES, 'UTF-8') - 拼接 SQL 时务必使用预处理语句(PDO/MySQLi),绝不拼接字符串
- 作为文件名、路径使用前,严格校验格式(如只允许字母数字下划线)并拒绝目录穿越(
../)
调试技巧:快速查看所有 GET 参数
开发时可临时加一行打印全部内容:
<?php var_dump($_GET); // 显示结构和类型 // 或更清晰地: print_r($_GET); ?>
也可用 http_build_query($_GET) 重新生成查询字符串,方便调试重定向逻辑。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











