2015-02-09 134 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

回答