2013-04-07 152 views
0

我正在开发一个web应用程序。用户登录后,应存储名为user的变量$_SESSION。但是,当我尝试访问它后,我无法。PHP会话变量不会持续在页面上

login.php和settings.php均通过AJAX访问并显示在模态窗口中。

的login.php:

<?PHP 
require("require/connect.php"); 
$errors = array(); 
$passed=FALSE; 
if(isset($_POST['username']) && isset($_POST['password'])){ 
    /* Check db, no output */ 
    if($record->password != $password){ ?> 
      /* Output login fail message */ 
    <?PHP }else if(intval($record->confirmed)!=1){ ?> 
      /* Output email not cofirmed message */ 
    <?PHP }else{ ?> 
     $user = clone $record; 
     unset($user->password); 
     session_start(); 
     $_SESSION['user']=$user; 
     print_r($_SESSION); 
     /*output success message*/ 
    <?PHP }; 
}else{ /*output login form*/ } ?> 

打印出:

Array ([user] => stdClass Object ([id] => 11 [timestamp] => 2013-04-07 15:20:24 [username] => aakilfernandes [email] => [email protected] [salt] => 4d9b0fdc1d3241b9c9 [orders] => [karma] => 0 [stocks] => 0 [confirmation_code] => ed54er68d3d [confirmation_time] => 2013-04-07 15:20:24 [confirmed] => 1)) 

的settings.php

<?PHP 
require("require/connect.php"); 
require("require/userdata.php"); 
/*other stuff*// 

要求/ userdata.php

<?PHP session_start(); 
print_r($_SESSION); 

打印出:

Array () 
+3

地方'在session_start()'在你的代码的顶部,只是为了避免任何问题 – 2013-04-07 20:06:41

+0

'的session_start()'必须产生任何输出之前,甚至白-spaces。 – rcdmk 2013-04-07 20:18:24

回答

0

在login.php中我不得不搬到session_start()以上require("require/connect.php");。即使是直接下一行也不行。

不知道为什么这改变了什么,因为connect.php只是太行,没有输出。

connect.php

<?PHP 
mysql_connect(/**/)or die("Couldn't connect to MySQL database");  
mysql_select_db(/**/) or die("Couldn't select MySQL database in connect.php"); 
?> 
+1

关闭PHP标记后的空格。你非常需要打开错误报告。 – 2013-04-07 20:15:50