【问题标题】:phpsessid in cookie over https通过 https 在 cookie 中的 phpsessid
【发布时间】:2012-02-26 14:50:25
【问题描述】:

在我的本地 WAMP 服务器中,当我调用 session_start() 时,会话 ID 在 cookie 中设置如下,var_dump($_COOKIE) 给出以下信息。

array
  'PHPSESSID' => string 'qg8nrlpdtgb391386lhghgv727' (length=26)

所以当我再次调用 session_start() 时,我之前的会话会恢复。

但是当我将相同的代码部署到我的网络服务器时,没有在 cookie 中设置 PHPSESSID。因此,每次我调用session_start(), 时,都会创建一个新会话,而不是恢复上一个会话。

谁能告诉我问题的可能原因。 我们是否必须将 PHPSESSID 显式设置为 cookie?

另外,在我的本地(WAMP)中,我拥有 https,但我推送代码的网络服务器是 https。这是个问题吗?

我已经坚持了将近 3 天了。

提前致谢。 神无

【问题讨论】:

  • 你检查过服务器上的[session.use_cookies](php.net/manual/en/…)吗?
  • 我们是否必须在每次调用 session_start 时都设置 cookie 参数.. 你能解释一下它是如何在我的 WAMP 服务器上工作而不设置 cookie 参数...
  • 请将以下单行复制到 PHP 文件中,并告诉我们输出的行:<?php $path = session_save_path(); if (is_dir($path)) echo (is_readable($path) ? 'path is readable' : 'path is not readable').' and '.(is_writable($path) ? 'path is writable' : 'path is not writable'); else die('path is not a directory'); echo (ini_get('session.use_cookies') ? ' and use cookies are set' : ' and cookies are not set');
  • 糟糕,我刚刚看到你解决了你的问题

标签: php session session-cookies sessionid


【解决方案1】:

看起来此网络服务器上的会话处理配置不同。您应该比较会话部分下的 php.ini 文件中设置的值。

特别是:

  1. session.use_cookies 是否设置为 1?
  2. session.save_path 是否指向网络服务器用户具有写入权限的有效目录

有关会话设置的完整列表,请参见此处: http://de3.php.net/manual/de/session.configuration.php

【讨论】:

    【解决方案2】:

    我在 html

    标记之后立即调用了 session_start()。这就是问题所在。当我把 session_start() 方法移到 html head 标签之前,问题就解决了。

    感谢大家的帮助。
    神无

    【讨论】:

      猜你喜欢
      • 2012-06-24
      • 2011-02-16
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      相关资源
      最近更新 更多