什么?cookie居然是header?

发布于 2023-11-08  105 次阅读


事件起因

今天下午我在制造bug的时候,发现我的网站前台出现了这样的......

Warning: Cannot modify header information - headers already sent by (output started at /www/wwwroot/xxxxxxxxxxxxxxx/app/index/login.php:49) in /www/wwwroot/xxxxxxxxxxxxxxx/app/index/login.php on line 62

我就很方

翻译过来的意思就是 “在操作HTTP-header之前,你已经有了网页输出”,它还亲切的提醒了我在哪里进行了输出(第49行)

检查第49行

<a href="/login2.html<?=!empty($_GET['url'])?'?url='.$_GET['url']:""?>">使用背锅侠账号登录</a>

好吧,我承认我输出了......

但是....

但是这样的输出为什么能干扰到第64行的行为呢?
我们去查看第64行的代码
setcookie("state",$state);
好家伙,一行设置cookie的代码

这让我想起来了,写入cookie的行为就是操作header。
这就说得通了

解决措施

将设置cookie的命令提前到文件开头
非要在设置cookie命令前输出的,请使用静态输出手段。

届ける言葉を今は育ててる
最后更新于 2023-11-08