php - 如何使用 PHP 从多个页面访问会话变量
问题描述
我想访问master.php$_SESSION['roleid']
。master.php包含在每个页面中。用户登录后,我只能在dashboard.php中访问。如何在每个页面中访问。$_SESSION['roleid']
$_SESSION['roleid']
<?php
session_start();
if($_SESSION['login']==1) {
$_SESSION['loggedIn'] = true;
$role_id1 = $_GET['role_id'];
// store here in session
$name=$_GET['name'];
$_SESSION['roleid'] = $role_id1;
// $role_id=$_SESSION['roleid'];
$a=$_SESSION['roleid'];
// echo $a;die;
if(isset($_SESSION["roleid"])){
header("location:api/dashboard.php?role_id=$a?name=$name");
}
} else {
header("location:index.php");
echo "login unsuccessful.";
}
?>
解决方案
为了能够访问会话变量,您需要session_start();
在将使用会话变量的每个页面上调用。在开始调用之后,您可以使用像 thisecho $_SESSION["my_var"];
和 this 这样的会话变量来设置内容$_SESSION["my_var"] = "Var content";
,如果您不确定会话实际属于什么,可以通过执行来检查会话的内容var_dump($_SESSION);
。这将显示会话包含的所有数据,因为它是作为数组传递的。
请记住,会话不会通过子域递归,因为 cookie 用于跟踪哪个会话属于谁。会话还取决于尚未发送标头,因为它需要与 cookie 交互。
要延迟发送标头,请执行以下操作: 1.ob_start();
在需要设置多个标头的脚本的完全顶部调用 2. 执行您需要执行的操作,例如设置标头等 3. 调用ob_end_flush();
以发送标头。
这是关于此的官方 PHP 文档: https ://www.php.net/manual/en/function.ob-start.php https://www.php.net/manual/en/function.ob-end-刷新.php
推荐阅读
- google-apps-script - 合并重复行并设置值
- android - 卡片视图Android里面的功能
- database - 如何在 AWS 上进行数据库转储?
- reactjs - 渲染道具与传递功能组件,哪个是首选?
- spring - Spring WebFlux:HttpWebHandlerAdapter - 已建立的连接被中止
- javascript - iframe 悬停时滚动父窗口
- r - 在 U-SQL 中执行 R
- excel - 当单元格在单元格范围内有值时插入新行
- android - Android - 无法解决:cardview-v7
- google-analytics-api - 如何在 api explorer 中使用 Google Analytics API v3 > analytics.management.uploads.uploadData 方法