【发布时间】:2021-06-24 04:20:29
【问题描述】:
我同时有 2 个运行时环境:
- 前端:Angular JS (localhost:4401) 使用 VS Code (ng serve) 运行
- API:PHP 使用附加到数据库的 WAMP (localhost) 运行。
对于从我的前端到我的 API 的每次调用,我都会像这样调用会话开始:
(来自每个 *.php 页面中包含的“session.php”)
session_start();
// Make sure we have a canary set
if (!isset($_SESSION['canary'])) {
session_regenerate_id(true);
$_SESSION['canary'] = [
'birth' => time(),
'IP' => $_SERVER['REMOTE_ADDR']
];
}
我注意到我的 $_SESSION 变量在执行代码时始终具有“null”值,并且它无法检索最初创建的会话(目录:wamp64\tmp)。
我从 Angular 调用的示例:
checkLoginStatus(){
// Used to check if stay logged in cookie is set - autologin...
return this._http.get<loginResponse>(environment.api+"api/check_autologin.php").pipe(catchError(this.handleError))
}
你有什么想法吗? 提前致谢。
【问题讨论】:
-
session_start();之前的PHP代码发生了什么 -
首先,感谢您的回答。
session_start();是每个 .php 服务的第一行。每个页面以include_once ("config/session.php");开头,session.php 以session_start();开头 -
我也注意到$_SERVER也是空的……经过研究,感觉问题出在“全局变量”,但不知道如何保证。
-
我假设您使用的是
http://而不是file:/// -
您的所有超全局变量似乎都不可能为空或为空 - 您在哪里寻找这些/生成输出?