我尝试在 php 中使用函数 getallheaders() ,它基本上将请求的标头作为关联数组获取。奇怪的是,当我尝试从该数组中获取变量时,如果该数组中不存在该键,它将向用户发送响应。这是示例代码$headers = getallheaders();$a = $headers["non_existing_key"];echo headers_sent();这将打印 1,这意味着标头已发送,或者换句话说,我无法再为用户打开会话,因为 session_start() 仅在标头尚未发送时才起作用。我知道我可以用 isset() 检查密钥,但这只是出于好奇。有人可以帮助我为什么会发生这种情况吗?
2 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
如果您已启用error_reporting并且display_errors您的代码将触发:
注意:未定义索引:non_existing_key
为了显示错误,PHP 需要将输出发送到浏览器,因为不能混合 HTTP 标头和输出。
您可以使用常用技术验证密钥是否存在(选择您最喜欢的技术):
$a = isset($headers["non_existing_key"]) ? $headers["non_existing_key"] : null;
$a = array_key_exists("non_existing_key", $headers) ? $headers["non_existing_key"] : null;
$a = $headers["non_existing_key"] ?? null;
- 2 回答
- 0 关注
- 91 浏览
添加回答
举报
0/150
提交
取消