我是 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/