
本文介绍如何正确构造带查询参数的URL链接,并在目标页面中获取该参数,重点纠正常见错误(如误用#导致参数无法传递)。
本文介绍如何正确构造带查询参数的url链接,并在目标页面中获取该参数,重点纠正常见错误(如误用`#`导致参数无法传递)。
在Web开发中,通过URL传递参数(即GET参数)是最基础且高频的需求之一。例如,从列表页跳转到详情页时携带记录ID:/index.php?state=123。但实践中一个典型错误是混淆了片段标识符(#) 与 路径分隔符(/)。
❌ 错误写法(参数无法被服务器接收):
<a class="nav-link" href="#index.php?state=<?= $cc['id'] ?>">
此处 # 是URL片段(fragment),浏览器仅在本地处理,不会发送给服务器,PHP脚本完全无法读取 $_GET['state']。
✅ 正确写法(确保参数作为查询字符串发送):
<a class="nav-link" href="/index.php?state=<?php echo htmlspecialchars($cc['id']); ?>">
- 使用 /index.php(以斜杠开头的相对路径或绝对路径),而非 #index.php;
- 推荐使用 htmlspecialchars() 对输出值进行HTML实体编码,防止XSS攻击;
- 若 index.php 与当前文件同目录,也可简写为 href="index.php?state=..."(不加斜杠亦可,但建议统一用 / 表示根相对路径,避免路径嵌套问题)。
在 index.php 中接收参数:
<?php
// 安全获取并验证参数
$state = filter_input(INPUT_GET, 'state', FILTER_SANITIZE_NUMBER_INT);
if ($state !== false && $state > 0) {
echo "接收到的状态ID:", (int)$state;
} else {
http_response_code(400);
echo "无效的state参数";
}
?>⚠️ 注意事项:
- 始终校验和过滤 $_GET 数据,禁止直接输出或用于数据库查询;
- 避免在URL中传递敏感信息(如密码、令牌),因GET参数会暴露在浏览器历史、服务器日志及代理中;
- 如需更安全或更复杂的传参,考虑改用POST表单、Session或前端路由(如SPA中使用URLSearchParams)。
掌握这一机制,是构建可链接、可书签、可分享的动态页面的关键第一步。

















