2013-04-07 104 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