可能重复:
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.";
}
我已经完成了print_r($_SESSION)
,它打印了所有正确的信息。
然后在我的 test.php 中再次调用会话变量,以查看在真正简单的代码中发生了什么。
session_start();
print_r($_SESSION);
结果是一个空数组。当我转到编写会话的 easyphp 临时文件时,我总是会找到两个文件:一个包含所有正确信息的原始文件和一个没有任何信息的新文件。似乎当我打电话给第二个时session_start()
,它实际上是在开始一个新的会话,而不是回忆当前的会话。
我尝试进行研究以提供尽可能多的信息,而不是浪费人们的时间。任何想法都非常感谢。奇怪的是,这在几天前还有效,然后我开始对程序更深入的文件进行更改,这发生了。所以我test.php
只是为了了解更多关于转移问题的信息。