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正义以找到有关转移问题的更多信息.
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();呼叫移至文件的最开头.