PHP会话变量在重定向时不可用

时间:2018-06-09 00:44:57

标签: php session redirect

我是很多新手,所以如果这个问题很明显,我道歉。我找了很长时间的答案。

我正在努力在重定向上使用$ _SESSION变量。我在一个页面中设置变量并尝试在另一个页面中读取该变量,用户从第一页重定向到该页面。由于某种原因,第二页无法读取变量。这是我目前的代码:

PHP第1页:

<?php 
  if(!session_id()) session_start();
  $_SESSION['someVar'] = "someValue";
  echo "<script type='text/javascript'>window.location.href='/index.php';</script>";

PHP第2页(index.php):

<?php
  if(!session_id()) session_start();
  if (empty($_SESSION["someVar"])) {
    echo "no value!";
  } else {
    echo $_SESSION["someVar"];
  }
?>

我总是“没有价值!”。我已经尝试了几个方法来解决这个问题:

  1. 我将重定向分离到第1页的按钮上。没有帮助。
  2. 我在第2页上回显了它 - 它出现了一个空字符串。
  3. 我在两个页面上都回显了session_id(),它们匹配。
  4. 关于这一切的真正恼人的事情是,当我在本地运行它时(使用虚拟主机),代码可以正常工作。只有当我把它加载到一个“真正的”服务器上时才会失败,这告诉我问题出在其他地方,但我不知道在哪里看。

1 个答案:

答案 0 :(得分:0)

也许您的会话目录不可写。

使用session_save_path(),这是一个测试它的小函数。

function check_session_path() {
    echo is_writable(session_save_path()) ? "writable." : "not writable.";
}

在你的php页面1:

<?php
check_session_path();