页面之间的 PHP Session Id 变化

标签 php session

我遇到一个问题,我在 2 个页面之间丢失了 PHP session 。

session_start() 包含在一个名为 session-inc.php 的文件中,每个页面都需要设置 session 。这适用于站点上的所有页面,除了一个特定页面 member-profile.php。当访问此页面时,将设置并使用具有不同 ID(相同 session 名称)的新 session 。

更多细节:

  • session 名称是手动设置的
  • 所有页面都在同一个域名下的同一个服务器上
  • 如果我在 member-profile.php 文件中的 include('session-inc.php') 之上放置一个额外的 session_start(), session 将正确地进行
  • 我已经尝试在 .htaccess 中设置 session_cookie_domain 和 session.session_name,这对这个域有效,但它阻止了 session 被传递到支付域
  • 我们正在运行 apache 2.2.6 和 php 5.2.5

将 session_start() 放在 member-profile.php 文件中的 include('session-inc.php') 之上是解决这个问题的快速而肮脏的方法,但我想知道是否有人知道为什么会这样.

干杯

最佳答案

根据 PHP 文档,session_start必须在任何输出被发送回浏览器之前被调用——这个页面是否有一个流氓 CR/LF、Unicode 字节顺序标记或类似的东西在你 include('session-inc.php') 之前导致输出?

关于页面之间的 PHP Session Id 变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2045550/

相关文章:

php - IE 不会从 iframe 启动 session ?

asp.net-mvc - 检测用户 session 超时时刻并执行方法

php - $_SESSION 变量选择性加载

javascript - 启用js重定向到apache服务器的私有(private)文件夹

javascript - 如何使用 jquery 根据复选框状态获取隐藏字段的值

php - cakePHP 2.0 发现 ('threaded' ) 问题

angularjs - 在后端的 typescript/angular2 环境和 nodejs 中设置持久 session 时遇到问题

php - 只需传递视频 URL 即可播放 Youtube 视频

php - 使用 php 的谷歌云语音 API

java - Spring session 作用域 bean,线程安全