为什么我得到这些php session_start()错误?

时间:2012-10-24 05:41:55

标签: php database cookies error-handling

  

可能重复:
  Headers already sent by PHP

这些是错误:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers
already sent by (output started at 
C:\xampp\xampp\htdocs\ProjSecond\includes\overall\Oheader.php:3) in  +
C:\xampp\xampp\htdocs\ProjSecond\core\init.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter -  
headers already sent (output started at  
C:\xampp\xampp\htdocs\ProjSecond\includes\overall\Oheader.php:3) in  
C:\xampp\xampp\htdocs\ProjSecond\core\init.php on line 2

我在不同的目录中构建我的项目,下面是相关文件的代码:

FILE:init:

<?php
session_start();
require 'database/connect.php';


?>

文件:Oheader:                

<body>
<?php include 'includes/header.php';?>

文件:头:

<head>
<title>Project47</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="css/pjcss.css">
</head>

有没有人知道为什么会这样?上面显示的代码是每个文件的全部

3 个答案:

答案 0 :(得分:1)

因为你在开始会话之前输出了一些东西

即使会话开始前的空格也会导致此警告

和已发送的标头也是因为在标题

之前发送了一些内容

enter image description here

答案 1 :(得分:0)

将php代码和include语句写在顶部。然后开始编写html。 见下文

<?php
session_start();
include 'includes/header.php';
?>

<html>
  <head></head>

...
...

答案 2 :(得分:0)

使用项目结构,您需要确保init.php是执行序列中调用的第一个文件,并且每个其他文件(包括“Head”)都应包含在该文件中。在session_start()之前,您不能输出甚至是空字符串。如果所有文件都包含在一个单独的主文件中,比如index.php,它应该是这样的。

  <?php
      include ("init.php");
  ?>
   <html>
   <!-- The head file should come here -->
   <?php
      include "Oheader.php";
    ?>