0

我有一个包含登录名的网站,当用户登录时,我希望它在主页上显示一条消息并继续进行会话。

我收到错误:

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

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

当我未登录时,它会显示错误,但一旦我登录并返回页面,它就会消失,但不会显示“您已登录!” 就像它应该...

这是我在检查数据库是否匹配后的身份验证代码:

if ($result["userName"] == $_POST[txtUsername] && $result["password"] ==$_POST[txtPassword])
    {
        ?>
        <script type="text/javascript">;
        alert("successfully logged in, <?php echo $result['userName'];?>!");
        window.location.href='http://manning3.jcu.edu.au/~jc192699/index.html';
        </script>
        <?php
        session_start();
        $_SESSION["access"] = 'granted';
    }

我的 index.php 中的代码似乎导致了错误:

 <?php
    session_start();
    if ($_SESSION["access"] == 'granted'){
        ?>
        <p>You are logged in!</p>
        <?php
    }
    else{
    ?>
    <p>You are not logged in!</p>
    <?php
    }
    ?>

任何帮助将不胜感激。谢谢!

4

2 回答 2

2

session_start()必须在任何输出打印到浏览器之前调用。因为您在开始会话之前打印了一个 javascript 脚本,所以已经设置了标头,因此无法启动会话。

于 2012-05-11T00:05:56.030 回答
1

看起来您<?php在第 1 行的声明之前有一个空格。这将导致之前发送标头,session_start()并可能导致您收到错误。

于 2012-05-11T00:04:25.473 回答