You need to enable JavaScript to run this app. PHP开发中无法通过$_GET获取以#开头的id参数问题
优惠活动
大模型
产品
解决方案
定价
更多

PHP开发中无法通过$_GET获取以#开头的id参数问题

异常产生的核心原因

#是URL规范定义的片段标识符保留特殊字符,浏览器会将#及其后续所有内容判定为页面内定位的锚点信息,这部分数据完全不会随HTTP请求发送到服务端,因此PHP的$_GET超全局数组无法捕获这部分参数内容。

两个测试地址的实际请求差异

  • 可正常获取值的地址http://localhost/user_notes/user.php?id=1234:浏览器发起请求时,会将完整查询串id=1234传递给服务端,PHP可正常解析得到id参数值为1234。
  • 取值失效的地址http://localhost/user_notes/user.php?id=#1234:浏览器在发起请求时,会从#的位置截断待传输内容,实际发送到服务端的查询串仅为id=,即id参数本身为空值,执行echo $_GET['id'];自然不会有任何输出。
可落地的解决方式

如果业务场景确实需要将#作为参数值的组成部分,不能直接在未编码的URL中书写#字符,必须先对参数值执行标准URL编码:
#对应的URL编码值为%23,调整后可正常传值的访问地址为http://localhost/user_notes/user.php?id=%231234,该场景下PHP端的$_GET['id']会正常解析得到完整的#1234值。

内容的提问来源于stack exchange,提问作者Abhishek kamal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.02 16:36:04