2011-01-25 33 views
0

我有一個類在我的代碼中處理SESSION並將會話數據存儲在數據庫中。在Read回調函數中,我寫了一個查詢並從DB加載數據並返回該值,但是當轉儲$ _SESSION時這是空的!PHP會話處理(閱讀功能)問題

我跟蹤代碼,我的查詢是corrent和數據加載但未設置會話值。這個問題apear在子域中,但session_id和COOKIE是正確的。

我讀功能代碼:

function read($session_id) 
{    
    $result = @mysql_query(" 
     SELECT 
      session_data 
     FROM 
      session_table 
     WHERE 
      session_id = '".$session_id."' AND 
      session_expire > '".time()."' 
    "); 

    if (is_resource($result) && @mysql_num_rows($result) > 0) { 
     $fields = @mysql_fetch_assoc($result); 
     return $fields["session_data"]; 
    } 


     return ""; 

    } 

我的日誌:

read function log: 
      SELECT 
       session_data 
      FROM 
       sessions_table 
      WHERE 
       session_id = '389dd7fc7bc19ffead7274c0ad860896' AND 
       session_expire > '1295954400' 
read function result log: 
Array 
(
    [session_data] => corret serialized data 
) 

write function log: 
       UPDATE 
        sessions_table 
       SET 
        session_data = '', 
        session_expire = '1295955840' 
       WHERE 
        session_id = '389dd7fc7bc19ffead7274c0ad860896' 
+0

你的垃圾收集功能呢? – RobertPitt 2011-01-25 11:43:42

回答

0

不要使用錯誤supression運算符(@)。這就是阻止你看到你在代碼中犯的錯誤。這就是爲什麼你不知道錯誤在代碼中的位置。這就是爲什麼你必須問你的代碼中出現錯誤的原因。

實際上,我在代碼中看不到任何錯誤,但例如,如果數據庫設置不正確或者SQL語法中有錯誤,mysql_query會告訴你。

+0

親愛的奧斯瓦爾德:這段代碼是正確的,在我的日誌中,這個查詢有一個結果,沒有任何錯誤,但在返回值後,這個會話是空的。 – Akbar 2011-01-25 11:28:07