【问题标题】:I put the php script before the html, but I still get header already sent in error [duplicate]我将 php 脚本放在 html 之前,但我仍然收到错误的标头 [重复]
【发布时间】:2020-01-21 15:18:48
【问题描述】:

这里是初学者 PHP 编码器

我正在尝试使用 if 语句来检测会话,并在使用正确的用户名和密码登录时将导航栏从登录更改为注销。 我将 php 脚本放在 html 之前,但仍然出现“标头已发送”错误。 脚本:

    <?php
       session_start();
       ?>
       <DOCTYPE html>
       <html>
       <head>
       <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
       <meta name="viewport" content="width=device-width, initial-scale=1">
       <link rel="stylesheet" href=main.css>
       </head>                           
       <body>
       <div id="wrapper">
       <nav>
       <ul class="main_menu">
       <li><a href="mainpage.html">Main page</a>
       <li><a href="contact.html">Contact Us?</a>
       <li><a href="aboutus.html">About Us</a>
       <?php
       if (isset($_SESSION['username'])){

       echo "<li><a href="Logout.php">Logout</a>";

       } else {
       echo "<li><a href="Login.php">Login</a>";
       }

       ?>

       </ul>
       </nav>
       </div>

       </body>
       </html>

我做错了什么?

【问题讨论】:

  • 确保在您的第一个 &lt;?php 之前没有空格或换行符。
  • 还要确保您的脚本文件保存为“UTF-8 without BOM”。如果您的文件确实在开头包含 BOM,PHP 会将其传递到要发送到客户端的输出中,然后这也构成“输出”。
  • &lt;?php 标签前有 4 个空格。
  • 你的 li 也没有结束标签。
  • 是的,谢谢,现在可以了,我刚刚删除了空格。

标签: php html error-handling


【解决方案1】:

确保PHP 标记之前没有空格或在它之前打印的任何内容所有这些都会导致此问题

有一个快速的解决方案,但不是最好的 在打开你的session之前添加到页面顶部

ob_start(); // Output Buffering Start

在脚本的结尾

ob_end_flush(); // Release The Output

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2016-12-25
    • 2019-08-11
    • 2012-08-23
    • 2017-07-06
    • 1970-01-01
    • 2014-03-31
    相关资源
    最近更新 更多