【问题标题】:PHP Session variable is empty after redirecting to another page [duplicate]重定向到另一个页面后PHP Session变量为空[重复]
【发布时间】:2017-05-25 08:28:08
【问题描述】:

我正在创建一个 PHP 会话、用户名和所有内容,但是当我使用标头 (foo.php) 重定向时,$_SESSION 变量显示为空,即使在使用 var_dump 检查重定向之前它似乎已正确填充。

首先我创建会话:

   $_SESSION['loggedin'] = true;
   $_SESSION['username'] = $username;
   $_SESSION['start'] = time();
    $_SESSION['expire'] = $_SESSION['start'] + (5 * 60);
   echo "Bienvenido! " . $_SESSION['username'];

   header('location:login-success.php');
   exit();

在下一页我在页面顶部开始会话,上面没有 HTML,什么都没有:

<?php
    session_start();
    if(!isset($_SESSION['username'])){
        echo "nope";
    }
?>

输出总是“不”。我已经在我的本地主机和远程主机上尝试过,启用了几个浏览器和 cookie。现在检查 var_dump 时,$_SESSION 显示为空。

【问题讨论】:

  • 创建会话后,您是否启动了它?你确定不是不小心毁了它吗?
  • 您是否在将数据加载到会话中的脚本中执行了session_start()
  • session_start(); 需要在顶部的每个页面上,您将以任何方式处理SESSION。所以将其添加到您的第一页
  • @AlivetoDie 这正是我所缺少的。我觉得很愚蠢,因为我花了几个小时,我自己无法弄清楚。谢谢。

标签: php session backend


【解决方案1】:

session_start(); 需要在顶部的每个页面上,您将以任何方式(创建、更新、删除)处理 SESSION。

所以将它添加到您的第一页,如下所示:-

<?php
  session_start();
  $_SESSION['loggedin'] = true;
  $_SESSION['username'] = $username;
  $_SESSION['start'] = time();
  $_SESSION['expire'] = $_SESSION['start'] + (5 * 60);
  echo "Bienvenido! " . $_SESSION['username'];

  header('location:login-success.php');
  exit();

【讨论】:

    猜你喜欢
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    相关资源
    最近更新 更多