1

我在 index.php 中包含 login.php 和 loggedin.php 文件。

login.php 和 index.php 都没有 session_start(); 只有 login.php 有 session_start(); 在里面。

但是当我打开 index.php 时仍然出现以下错误:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/content/98/10855698/html/symp13/index.php:110) in /home/content/98/10855698/html/symp13/loggedin.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/content/98/10855698/html/symp13/index.php:110) in /home/content/98/10855698/html/symp13/loggedin.php on line 2

登录的.php 如下:

<?php
session_start();
if (isset($_SESSION['username'])) {
echo 'you are logged in as'.' '.$_SESSION["username"];
echo '<form action="upload.php" method="post" enctype="multipart/form-data" name="upload">'.'<input type="file" name="file" /><input type="submit" name="submit" />'.'</form>'; }
else {
echo 'You need to login in with your account for submitting abstract or for applying for tutorials!';
echo 'Click here to'.' '.'<a href="login.php">login</a>';
}
?>

login.php 包含一个表单,其动作设置为 login_check.php,其中包括 session_start();。但我认为这不是问题..因为在提交表单之前它无法运行。

如果我只在单独的文件中运行 login.php。它没有显示任何错误。

我很困惑。请告诉我如何解决这个问题以及原因。

在此处输入图像描述

4

2 回答 2

2

正如文档所说:

要使用基于 cookie 的会话,必须在向浏览器输出任何内容之前调用 session_start()。

这意味着在调用 之前不能有空格session_start(),甚至是空格。因此,您的 index.php 文件必须如下所示:

<?php

  include 'loggedin.php'; //containing session start
  include 'login.php';

  echo 'other output';
?>
more output here
于 2013-05-14T13:04:45.923 回答
1

把你的:

<?php ... ?>

在一切之上(在身体之上)。它不会破坏任何东西。然后根据需要使用 CSS 进行定位。

于 2013-05-14T13:31:46.987 回答