【问题标题】:PHP session variables not available on redirectPHP 会话变量在重定向时不可用
【发布时间】:2018-11-19 01:32:38
【问题描述】:

我对此很陌生,所以如果这个问题很明显,我深表歉意。找了很久的答案。

我正在为在重定向上使用 $_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(),并且它们匹配。

所有这一切真正令人讨厌的是,当我在本地运行代码时(使用虚拟主机),代码可以完美运行。只有当我将它加载到“真实”服务器上时我才会失败,这向我表明问题出在其他地方,但我不知道去哪里找。

【问题讨论】:

  • 检查 PHP 错误日志中的“标头已发送”警告。

标签: php session redirect


【解决方案1】:

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

使用session_save_path(),这里有一个小函数来测试它。

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

在您的 php 页面 1 中:

<?php
check_session_path();

【讨论】:

  • 谢谢,就是这样。输出显示它不可写。我联系了我的网站托管公司,他们改变了它。现在可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 2023-03-30
  • 2012-06-19
  • 2014-08-14
  • 1970-01-01
  • 2017-07-06
相关资源
最近更新 更多