我有一个登录页面,我注册了两个会话用户名和密码。然后重定向到另一个页面。一旦到了这个页面
$_SESSION['username'] = "";
$_SESSION['password'] = "";
登录后检查我有下一页检查会话是否已注册
session_start();
if(isset($_SESSION["username"]){
continue
}else go back to login page
一旦我登录,我想转到另一个页面,取决于是否设置了会话变量,我在页面上显示不同的内容。
所以在galery页面上我做了
在我的页面顶部
<?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();在页面的乞讨中,我不知道为什么会这样。有什么想法吗?
答案 0 :(得分:3)
如果在致电session_start()
之前有任何内容输出到浏览器,您将收到该错误。例如,您不能这样做:
<?php
echo "Test";
session_start();
你也做不到:
<?php session_start();
(请注意<?php
之前的空格)
确保没有 - 没有HTML,没有空白行,没有空格 - 在session_start()
来电之前写出来,你会没事的。
答案 1 :(得分:1)
您需要在<?php
之前确保无(空格,UTF-8 BOM)。这也适用于session_start()
来电之前包含的任何文件。
答案 2 :(得分:0)
图库页面是否包含在另一个文件中?
<?php
// lots of php code
include('/path/to/gallery.php');
?>
如果在session_start()之前向浏览器发送了任何内容;它会产生这个错误。
答案 3 :(得分:-1)
Session是一个标题,在任何输出(甚至是单个空格)之后都不能发送标题。你有2个选项,在任何输出之前放置session_start(),或者你也可以使用输出缓冲,这允许你在输出后发送标题。
将其放在脚本的顶部
ob_start();
最后这个
echo ob_get_clean();