首页 > 解决方案 > 如何使用 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.";
}
?>

标签: php

解决方案


为了能够访问会话变量,您需要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


推荐阅读