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

时间:2015-02-09 15:10:22

标签: php ajax session cookies

我是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'];
?>

但是用户名为null。如果我在两个文件中请求会话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);

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

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

1 个答案:

答案 0 :(得分:1)

感谢用户n-dru我明白了。我把脚本称为&#34; http://myside.com/script.php&#34;来自&#34; http://www.myside.com/index.html&#34;。因为&#39; www&#39;脚本中缺少 - 调用它是对不同来源的调用。 所以cookie丢失了。我添加了www,从php中删除了&#34;允许Orgin&#34; -stuff现在它可以工作了。

谢谢大家!