没有检测到php会话

时间:2012-04-12 18:34:20

标签: php

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

$_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();在页面的乞讨中,我不知道为什么会这样。有什么想法吗?

where my session_start() is located

4 个答案:

答案 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();