我在index.php中包含了login.php和loggedin.php文件。
login.php和index.php都没有session_start();并且只有loggedin.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
loggedin.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();.但我不认为这是问题。因为,在提交表单之前无法运行。
如果我只在一个单独的文件中运行loggedin.php。它没有显示错误。
我很困惑。请告诉我如何解决这个问题以及原因。
答案 0 :(得分:2)
正如the documentation所说:
要使用基于cookie的会话,必须先调用session_start() 向浏览器输出任何内容。
这意味着在调用session_start()
之前必须有 no whitespace ,甚至是空白。因此,index.php文件必须如下所示:
<?php
include 'loggedin.php'; //containing session start
include 'login.php';
echo 'other output';
?>
more output here
答案 1 :(得分:1)
把你的:
<?php ... ?>
在一切之上(身体上方)。它不会破坏任何东西。然后根据需要使用CSS定位。