会话变量不在页面之间传输

jlo*_*fft 1 php session transfer

可能重复:
PHP已发送的标头

我正在创建一个简单的登录页面,但我的$_SESSION变量不是在页面之间传输.我在session_start()每个页面的开头,文件夹写作session_write_close()等等都阅读了很多其他帖子,但没有一个有效.该session_write_close()不会有所作为不论有无所以我刚刚离开它.所有下面的代码的正常工作,因为我已经低于和高于例如在离开了代码$login_fail的来源.

目前我设置的$_SESSION变量如下面的代码所示:

if($login_fail == "")
{
    $query = "SELECT first_name, last_name, email_address,password FROM user_info WHERE     email_address = '$email_address' AND password = '$password'";
    $result = mysql_query($query);

    if(!$result) die ("Database access : " .mysql_error());
    elseif (mysql_num_rows($result))
    {
        $row = mysql_fetch_row($result);
        $token = "$email_address";
        $token1 = "$password";
        echo "token: $token, token1: $token1, row[1]: $row[1], row2: $row[2] </ br>";
        if($token == $row[2] && $token1 == $row[3]) 
        {
            session_start();
            $_SESSION['first_name'] = $row[0];
            $_SESSION['last_name'] = $row[1];
            $_SESSION['email_address'] = $row[2];
            $_SESSION['password'] = $row[3];
            $_SESSION['check'] = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']);
            //print_r($_SESSION);
            session_write_close();
            header("Location: http://127.0.0.1/websiteproject/test.php"); 
        }
        else die("Invalid username/password combination");       
    }
}
else
{
    echo "Login failed. Please try again.";
}
Run Code Online (Sandbox Code Playgroud)

我做了print_r($_SESSION),它打印所有正确的信息.

然后在我的test.php中再次调用会话变量,看看真正简单的代码会发生什么.

session_start();
print_r($_SESSION);
Run Code Online (Sandbox Code Playgroud)

结果是一个空数组.当我转到我编写会话的easyphp临时文件时,我总能找到两个文件:原始文件包含所有正确信息,另一个文件没有信息.好像当我打电话给第二个时,session_start()它实际上是在开始一个新的会话,而不是回忆起当前的会话.

我尝试做我的研究,尽可能多地提供信息而不是腰部人的时间.任何想法都非常感谢.奇怪的是,这是几天前的工作,然后我开始更深入到程序中的文件,这发生了.所以我做了test.php正义以找到有关转移问题的更多信息.

dre*_*010 6

session_start()一旦将任何数据或空格输出到浏览器,就无法调用.

在您发布的代码中,您在呼叫echo "token: $token, token1: $token1, row[1]: $row[1], row2: $row[2] ";之前呼叫session_start(),这将不会启动会话.

添加error_reporting(E_ALL); ini_set('display_errors', 1);到脚本的开头,您应该看到有关无法启动会话的警告,因为已经发送了输出.

尝试将session_start();呼叫移至文件的开头.