【问题标题】:Php and sessions, header already sent [duplicate]Php和会话,标头已发送[重复]
【发布时间】:2023-04-01 01:02:01
【问题描述】:

可能重复:
Headers already sent by PHP

我知道我必须在页面的最顶部使用session_start(),这样HTTP 标头就可以在HTTP 正文开始发送到客户端之前完成他的工作。但这对我来说效果不佳。

这里,我要重置会话...

<?php 
ini_set( "display_errors", 0);  // Even without this it doesn't work, it's temporary to hide the problem
session_start();
$_SESSION = array();  // Clear the session
$_SESSION['state'] = "noConnection";
?>

<!DOCTYPE html>
<html> 
    <head>    // blah blah

【问题讨论】:

  • &lt;?php 标签前是否有杂散空格或换行符?
  • 还要注意任何包含中关闭 ?&gt; 标记之后的任何内容。如果您的页面仅是 PHP,我建议您省略 ?&gt; 标记以避免此问题。
  • 这是完整的脚本吗?我能想到的唯一可能的错误 - 在开始标签之前有一些空格。如果文件是 utf8 - 检查它没有 BOM(将文本复制到新文档并保存在 ansii 中)
  • 使用session_unset()error_reporting(0)

标签: php session header


【解决方案1】:

正确的答案是确保在第一个打开的&lt;?php 标记之前没有任何内容,甚至没有空格,或 UTF8 BOM 字符

作弊的答案是将php.ini的output_buffering指令设置为On

【讨论】:

  • 我的文件是用 UTF8 格式编码的,我将它们转换为 UTF8 w/o BOM。非常感谢!
  • 很高兴我能帮上忙。可悲的是,似乎很少有人记得 BOM 可能产生的巨大影响,并且总是认为这是你对空间的错。
  • 是的,我在一些论坛上发现的都是关于空白的……哈哈
【解决方案2】:

确保在打开&lt;?php 标记之前没有空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    相关资源
    最近更新 更多