1

我有一个登录页面,我注册了两个会话用户名和密码。然后重定向到另一个页面。曾经在这个页面

$_SESSION['username'] = "";
$_SESSION['password'] = "";

登录检查后,我有下一页检查会话是否已注册

session_start();

if(isset($_SESSION["username"]){


continue

}else go back to login page

登录后,我想转到另一个页面,这取决于是否设置了会话变量,我会在页面上显示不同的内容。

所以在画廊页面上我做

在我做的页面的最顶部

<?php 
session_start();

?>

然后再往下我想要按钮的地方

<?php
if (isset($_SESSION['username'])){


show a new button

}

?>

我得到了要显示的按钮,但在页面顶部我有

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent

它弄乱了我的页面的显示方式。有任何想法吗?我有 session_start(); 在页面的非常乞求时,我不知道为什么会这样。有任何想法吗?

我的 session_start() 所在的位置

4

4 回答 4

3

如果在调用session_start(). 例如,您不能这样做:

<?php

echo "Test";

session_start();

你也不能这样做:

 <?php session_start();

(注意前面的空格<?php

确保没有任何内容——没有 HTML、没有空行、没有空格——在你打电话之前被写出来session_start(),你会没事的。

于 2012-04-12T18:36:55.277 回答
1

您需要确保您的<?php. session_start()这也适用于您在调用之前包含的任何文件。

于 2012-04-12T18:36:20.760 回答
0

图库页面是否包含在另一个文件中?

<?php

// lots of php code

include('/path/to/gallery.php');

?>

如果在 session_start() 之前有任何东西被发送到浏览器;它会产生这个错误。

于 2012-04-12T18:37:47.640 回答
-1

会话是一个标头,在任何输出(甚至是单个空格)之后都不能发送标头。您有 2 个选项,将 session_start() 放在任何输出之前,或者您也可以使用输出缓冲,这允许您在输出后发送标头。

将其放在脚本的顶部

ob_start();

最后是这个

echo ob_get_clean();
于 2012-04-12T18:45:35.417 回答