
本文讲解如何在php网页中正确构造带查询参数的url链接,并在目标页面安全获取该参数,重点纠正常见错误(如误用#号导致参数无法传递)。
本文讲解如何在php网页中正确构造带查询参数的url链接,并在目标页面安全获取该参数,重点纠正常见错误(如误用#号导致参数无法传递)。
在Web开发中,通过URL查询字符串(Query String)传递参数是一种基础且高频的操作,例如跳转到index.php?state=123并读取state值。但一个常见却致命的错误是:在href属性中误将#(URL片段标识符)当作路径分隔符使用。
例如,以下写法是错误的:
<a class="nav-link" href="#index.php?state=<?= $cc['id'] ?>"></a>
此处的 # 会将整个 index.php?state=... 视为前端锚点(fragment),浏览器不会向服务器发起新请求,参数也不会被PHP脚本接收到——$_GET['state'] 将为空。
✅ 正确做法是使用绝对或相对路径,以 / 或 ./ 开头(取决于文件结构),确保触发完整HTTP GET请求:
立即学习“PHP免费学习笔记(深入)”;
<a class="nav-link" href="/index.php?state=<?php echo htmlspecialchars($cc['id']); ?>"> 跳转到详情页 </a>
? 关键修正点:
- 删除 #,改用 /(表示根目录下的index.php);
- 使用 显式输出(避免短标签依赖);
- 对输出内容调用 htmlspecialchars() 防止XSS(尤其当 $cc['id'] 来自用户输入或不可信源时)。
在 index.php 中,即可安全接收参数:
<?php
// 检查参数是否存在且非空
if (isset($_GET['state']) && is_numeric($_GET['state'])) {
$stateId = (int)$_GET['state'];
echo "当前状态ID:{$stateId}";
} else {
echo "无效或缺失 state 参数";
}
?>? 注意事项:
- 始终验证和过滤 $_GET 数据,避免SQL注入、XSS等风险;
- 若项目部署在子目录(如 https://example.com/app/),路径应调整为 ./index.php 或使用 $_SERVER['SCRIPT_NAME'] 动态生成;
- 现代应用推荐结合路由系统(如PHP框架的Router)替代裸URL传参,提升可维护性与安全性。
掌握这一基础机制,是构建动态、交互式PHP页面的重要一步。



















