会话变量未结转

Posted

技术标签:

【中文标题】会话变量未结转【英文标题】:Session variables not carrying over 【发布时间】:2013-08-12 19:26:03 【问题描述】:

我正在尝试编写一个登录脚本,该脚本将设置一个会话变量,然后将用户重定向到另一个页面。会话变量在设置它的页面上显示良好,但在下一页上根本不显示。我已经剥离了我的主页,所以它所做的只是回显会话变量。

登录.php

    session_start();

    if(isset($_POST['process_login']))
            include('php/db.php');

            $query = mysql_query("SELECT USERS.USERNAME, USERS.PASSWORD FROM USERS") or die (mysql_error());
            while ($result = mysql_fetch_array($query))
                    if (strtoupper($_POST['username']) != $result['USERNAME'] || md5($_POST['password']) != $result['PASSWORD'])

                            echo "<center><font color=red>Incorrect username or password</font><center>";
                    
                    else
                            $_SESSION['username'] = $_POST['username'];
                            #echo $_SESSION['username'];
                            #printr ($_SESSION);
                            echo "<script> window.location = \"home.php\"; </script>";
                    
                    //echo $result['username'];
            
    

home.php

session_start();
echo $_SESSION['username'];

【问题讨论】:

是的。我在 Windows、OSX 和 ios 上使用 Firefox、Chrome 和 Safari 进行了尝试。对其中任何一个都不起作用。 我认为会话在没有 cookie 的情况下也可以工作? 您是否尝试过传递会话 id 变量以查看是否是 cookie 问题? 【参考方案1】:

按照您的设置方式,它应该可以正常工作。这就是您拥有的所有代码吗?

【讨论】:

对于 home.php 这就是它现在的全部内容。这是我的整个 login.php。 pastebin.com/Z5qTpnzN 这可能是一条评论:) 顺便说一句:session_start();必须是代码中的第一条语句!放入1号线!并且还尝试输入 error_reporting(E_ALL);到代码顶部以识别更多错误。 @T_01,不,它必须在任何输出之前,而不是代码中的第一件事。 是的,我知道,但为了防止出现任何错误,最好将它放在顶部 ;)

以上是关于会话变量未结转的主要内容,如果未能解决你的问题,请参考以下文章

未设置会话变量会停止执行

数据未保存在会话变量中

会话变量未在函数中设置

未设置时的php会话变量问题

使用 AJAX 设置时未保存 Django 会话变量

会话变量未在实时服务器中传递[关闭]