【问题标题】:PHP sessions on localhost using xampp使用 xampp 在 localhost 上的 PHP 会话
【发布时间】:2012-07-23 05:46:20
【问题描述】:

我在本地 windows xp pc 上运行 xampp 1.7.3。 phpinfo() 确认会话已启用。

在“login.php”中,我必须遵循以下代码:

session_start();
$_SESSION['user'] = "user";
//var_dump($_SESSION);
header("Location: index.php");

在'index.php'我有这个代码:

session_start();
var_dump($_SESSION);

但是,当我到达 index.php 时,没有打印任何内容,$_SESSION 信息似乎丢失了(因为它是在我取消注释 login.php 中的 var_dump 时打印的)。在 php.ini 中,我检查了 session.save_path。在这个路径中,我可以找到一个会话文件,其中包含存储在 login.php 中的会话信息。但是为什么会话信息没有传递到index.php??这是出于某种原因,因为我在本地主机上运行吗?

【问题讨论】:

  • 您是否启用了错误报告?
  • 正如 Truth 已经提到的,确保您可以看到所有错误和警告 error_reporting(E_ALL);,并确保您的浏览器允许存储 cookie。
  • 感谢您的提示。错误报告已启用 (error_reporting(E_ALL);) 并且浏览器也可以存储 cookie。
  • 尝试使用 fiddler / iehttpheaders / tamperdata / firebug 查看 http 流以检查 cookie 是否正在设置/返回。
  • 页面之间的 session-id 是变化的,还是保持不变(您可以使用session_id() 检查 id)?

标签: php session xampp localhost


【解决方案1】:

我不相信这会起作用,因为要使 $_SESSION 起作用,需要设置标题。

通过在脚本中间设置 header(),您正在阻止 $_SESSION 被完全应用。

所以不要使用 header() 将位置更改为 index.php。您可以在 login.php 上放置一个链接,单击该链接转到 index.php,然后查看您的会话是否已正确配置。

您也可以在页面加载后使用 JavaScript 来更改页面,只是不要使用 PHP header()。

【讨论】:

  • 重定向工作没有问题,我在我的网站上以这种方式实现了 Post-Redirect-Get 模式。通常你在重定向之后添加一个exit();,否则脚本会继续运行。
猜你喜欢
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 2015-12-16
  • 2017-08-17
  • 2023-02-22
  • 2012-05-08
  • 1970-01-01
  • 2020-06-17
相关资源
最近更新 更多