2015-02-09 236 views
3

我是PHP新手,無法使用會話。 我使用AJAX從JavaScript調用登錄php-script。在那裏我想創建會話並設置一個值。PHP:會話變量丟失,會話ID更改(使用Ajax)

<?php 
ini_set('display_errors', 1); 
session_start(); 
header('Content-Type: application/json'); 
header('Access-Control-Allow-Origin: *'); 

$_SESSION['username'] = "username"; 

?> 

我在javascript中處理響應,並使用AJAX再次調用另一個php-script。其他文件如下所示:

<?php 
ini_set('display_errors', 1); 
session_start(); 
header('Access-Control-Allow-Origin: *'); 
header('Content-Type: application/json'); 

$username = $_SESSION['username']; 
?> 

但用戶名爲空。如果我在兩個文件中請求會話ID,則會話ID已更改。從第一個文件發送包含PHPSESSID的響應Cookie。我是否必須在調用第二個腳本的AJAX調用中使用此ID?

更新:由於要求AJAX碼:

function callAjax(url, data, successCB, errorCB) { 
    $.ajax({ 
      url: url, 
      type: 'post', 
      data: data, 
      success: successCB, 
      error: errorCB 
    }); 
} 

調用,如:

callAjax(GET_TEMPLATES_PHP_URL, {}, onGetTemplateSuccess, onRessourceRetrievalError); 

我如此相似的問題檢查的答案,但他們並沒有幫助。

任何想法?提前致謝。

+1

檢查會話cookie設置。例如如果您的會話設置爲'/ foo'子目錄,並且您的ajax代碼位於'/ bar'中,則Cookie將不可見。 – 2015-02-09 15:16:57

+0

向我們展示Ajax/JS。我看不出這會失敗。但是,這個'$ _SESSION ['username'] =「username」;'應該很可能是'$ _SESSION ['username'] = $ username;' – 2015-02-09 15:19:56

+0

@JayBlanchard不應該。錯誤報告不計爲輸出。 * Mornin'Ralph * – 2015-02-09 15:23:00

回答