PHP:会话变量丢失,会话id更改(使用Ajax)


PHP: Session variable lost, session id changes (using Ajax)

我是PHP新手,在使用会话时遇到问题。我使用AJAX从javascript调用登录php脚本。我想在那里创建会话并设置一个值。

<?php
ini_set('display_errors', 1);
session_start();
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
$_SESSION['username'] = "username";
?>

我用javascript处理响应,并再次使用AJAX调用另一个php脚本。另一个文件如下:

<?php
ini_set('display_errors', 1);
session_start();
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
$username = $_SESSION['username'];
?>

但是username为null。如果我在两个文件中都请求了会话ID,会话ID就会更改。从第一个文件发送包含PHPSSID的响应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);

我检查了类似SO问题的答案,但没有帮助。

有什么想法吗?提前谢谢。

感谢用户n-dru,我明白了。我把剧本叫做"http://myside.com/script.php"来自"http://www.myside.com/index.html".因为脚本调用中缺少'www',所以它是对不同来源的调用。所以饼干丢了。我添加了www,从php中删除了"Allow Orgin",现在它可以工作了。

谢谢大家!