php - AngularJS ngRoute 和 PHP $_SESSION 变量

标签 php angularjs session angularjs-routing ngroute

我有 3 个页面:

  1. index.php
  2. 登录.php
  3. 显示.php

索引.php

使用 ngRoute 模块设置 AngularJS 来导航我的页面。

登录.php

默认加载并设置 PHP $_SESSION 变量。

显示.php

回显 $_SESSION 的内容。

我使用 ngRoute 的链接设置从 login.php 导航到 display.php。

问题

display.php 不显示 $_SESSION 变量,无论我导航多少次。它只会在我手动导航到页面(例如刷新页面或在浏览器中输入地址)时显示它们。

我知道 php 代码已执行,因为我可以将其他内容回显到屏幕上,它只是不访问 $_SESSION 变量。

这是为什么?

最佳答案

我想我可能知道您的问题出在哪里。您尝试在单页 angularJS HTML 模板中访问 php session ,对吗?喜欢:

<div ng-repeat="n in <?php $_SESSION['someSessionArray'] ?>">

这不是它的工作原理。您的 $_SESSION 永远不会在您的模板中可用。 您可以做的是使用 ajax 请求进行登录身份验证,并让该请求为您提供 session ID。 然后在进一步的 ajax 请求中开始 session 时使用该 session ID(如前所述)。

然后,当您想将某些内容存储到 php session 时,通过 ajax 请求和 php 服务访问数据。

一个非常非常非常简单的例子: 在 getFromSession.php 里面

session_start($_GET['session_id']);
$key = $_GET['key']
echo json_encode($_SESSION[$key]);

在 storeToSession.php 中

session_start($_GET['session_id']);
$key = $_GET['key'];
$value = $_GET['value'];
$_SESSION[$key] = $value;

在你的 login.php 中

$user = yourAuthMechanism($_GET['username'],$_GET['password']);
if($user) {
  session_start();
  echo json_decode(array('status' => 'success','sid' => session_id()));
}
else { ... error handling

在您需要访问 session 数据的任何 Angular 内:

$promise = $http.get('pathtoyourphp/getFromSession.php?key=foo');
$http.set('pathtoyourphp/getFromSession.php?key=bar&value=4');
// now use promise to acces the data you got from your service

关于php - AngularJS ngRoute 和 PHP $_SESSION 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22085068/

相关文章:

javascript - 每个 session 仅提交一次 php 表单

php - 未找到类 'Facebook'

javascript - 消耗 angular.js 剩余请愿书的所有记录

javascript - 如何获取 Angular 表总价

javascript - 每次路线更改时运行函数

PHP 静态方法初始化 $_SESSION 变量?

javascript - Chrome 在关闭/退出时不清除 SESSION COOKIES

php - 我似乎无法弄清楚为什么我的图像上传脚本不起作用

php - 返回按文章日期排序的类别

php - 如何在Symfony 4中使用dataTables防止错误 “Invalid JSON response”?