【问题标题】:PHP sessions unknown error [duplicate]PHP会话未知错误[重复]
【发布时间】:2012-05-19 14:23:56
【问题描述】:

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

我收到错误消息:

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
    }
    ?>

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

【问题讨论】:

  • 在您的代码中某处,一个松散的空间(通常在文件末尾)导致在您调用 session_start 之前触发输出。检查右栏中的无数相关问题以获取更多查看位置...
  • 无论你如何处理会话,session_start() 必须是你要做的第一件事。
  • 感谢您的帮助!现在错误已经消失了,但我还是有问题...登录并返回索引页面后,系统没有显示“您已登录!”。有什么线索吗?

标签: php


【解决方案1】:

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

【讨论】:

  • 感谢您的帮助!现在错误消失了,但我还是有问题……我登录并返回索引页面后,系统没有显示“您已登录!”。有什么线索吗?
  • Cookie 非常适合登录。只需存储一个包含用户是否登录的 cookie,并在其上设置到期日期。然后,对于您的注销,您将通过将其到期日期设置为过去的日期来使该 cookie 到期。另外,在旁注中,您应该在提出问题时按接受的答案;这样做可以让其他用户知道您是如何解决遇到的问题的。
  • 对我该如何做这件事有什么想法吗?
  • 是的; here 是一个与 cookie 相关的问题,基本上展示了如何做到这一点。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 2012-11-11
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多