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

标签 php ajax session cookies

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

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

但是用户名是空的。如果我在两个文件中都请求 session ID,则 session 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 问题中的答案,但没有帮助。

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

最佳答案

感谢用户 n-dru,我弄明白了。我从“http://myside.com/script.php”中将脚本称为“http://www.myside.com/index.html”。因为脚本调用中缺少“www”,所以它是对不同来源的调用。 所以 cookies 丢了。我添加了 www,从 php 中删除了“Allow Orgin”-stuff,现在它可以工作了。

谢谢大家!

关于PHP: session 变量丢失, session ID 更改(使用 Ajax),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28412904/

相关文章:

java - 在序列化之前从 session 中删除属性

php - 连续的 Ajax 查询返回旧信息

php - WordPress - 使用 jQuery/Ajax 将表导出为 csv

javascript - 为什么我的 jquery ajax post 成功但 $_POST 数组仍然为空?

ajax - 如何通过 NodeJS 向端点发出 Ajax 请求

php - 在 session 过期时将 session 变量保存到数据库

BIGINT 的 PHP/MYSQL 问题

php - 从 csv 文件大量插入

php - 使用 mysql 和 php 搜索除日期字段之外的整个表

django - 如何将 session 数据放入 SetUp() - Django 测试