我的代码:
<?php
session_start();
$_SESSION["favcolor"] = "green";
?>
<html>
<head>
<link rel="stylesheet" href="style.css">
<meta charset="utf-8">
<title>Login | NeonBLOX</title>
charset stuff
</head>
<body>
<?php
$_SESSION["favcolor"] = "green";
?>
<div class="ib2">
top stuff
</div>
<div class="ib">
form stuff
</div>
</body>
</html>
为什么错误警告: session_start():当报头已经发送(.)时不能启动会话在二号线?我正在尝试用我的当前站点测试会话内容,这样我就可以将预置的信息发送到另一个网页,但是它给了我这个错误,甚至在我登录之前。
发布于 2021-04-27 23:21:04
您的PHP代码在session_start();
之前打印空格。根据经验,在调用session_start();
之前不要进行任何输出。
解决这个问题的方法是删除<?php
之前的空白,因为这也将被输出。
<?php
session_start();
$_SESSION["favcolor"] = "green";
?>
<html>
<head>
<link rel="stylesheet" href="style.css">
<meta charset="utf-8">
<title>Login | NeonBLOX</title>
charset stuff
</head>
<body>
<?php
$_SESSION["favcolor"] = "green";
?>
<div class="ib2">
top stuff
</div>
<div class="ib">
form stuff
</div>
</body>
</html>
发布于 2021-04-27 23:25:41
这通常意味着PHP脚本的某些输出已经为当前请求准备(或发送)给客户端。
头在许多编程通信中使用,它们是为即将发生的任何事情准备接收者的一种方法。它们通常包含内容类型、传入数据的字节数以及其他元数据。
在PHP中,它们还可以包含会话数据--会话密钥以及您在其中打包的任何其他内容。为每个响应同时发送一次头。因此,如果您已经发送了标题,上面写着“这个响应没有会话”,那么您就不能随后说“等等,有!”因为报头已经熄灭了。
当您在PHP中启动会话时,它会尝试连接到挂起的标头,以便将会话数据打包到其中,但是如果标头已经熄灭,您将得到错误的Cannot start session when headers already sent
。
因此,解决方案是在调用该session_start()
函数之前确定您的php堆栈在哪里发送标头。请注意,任何打印的空白都很重要!这个小的factoid允许我们再次查看您的代码,并在打开<?php
标记之前看到有一个选项卡。这是空白,它启动数据发送,这意味着当您运行任何php时,您的头已经在返回客户端的路上了!
https://stackoverflow.com/questions/67291766
复制相似问题