【问题标题】:PHP - Why call to session_start() generates unusual empty session files?PHP - 为什么调用 session_start() 会生成异常的空会话文件?
【发布时间】:2019-12-29 10:21:55
【问题描述】:

我正在为我的网站进行 PHP 会话管理。我发现即使我不给$_SESSION赋值,session_start()仍然会在相应的会话文件目录中生成异常的空会话文件。我怎样才能阻止它不生成无用的会话文件,并且只在 $_SESSION 填充了一些值时才生成会话文件?

谢谢!!!

【问题讨论】:

  • session_start 执行它所称的操作..它创建文件/行以关联 id。你想实现什么会话垃圾收集不做?
  • 那些文件并不少见。如果它们是空的,为什么重要?

标签: php session session-cookies session-variables


【解决方案1】:

它们不是没用的。假设 John 访问该站点并获得会话 ID abc。也许该站点直到很久以后才生成会话数据,但 John 仍然具有相同的会话 ID。

现在假设 Mary 在 John 之后几分钟访问了该站点,PHP 也想给她 abc 的会话 ID。

如果空会话文件存在,则 PHP 知道该 ID 正在使用中,因此它给 Mary 一个不同的会话 ID。

如果它没有那个文件,那么 Mary 可能与 John 共享相同的会话 ID,并最终在服务器填充 John 的数据时看到他的数据。

当然,会话 ID 冲突的可能性很小,但安全总比抱歉好。

编辑:如果您没有填充很多会话,您总是可以尝试减少调用 session_start() 的页面,以便仅在实际使用时调用它。

【讨论】:

  • 所以我不能阻止这件事?
  • 如果您使用默认会话处理程序则不会(至少据我所知不是)。也就是说,PHP 确实允许您实现自定义会话处理,因此如果您担心空文件,您可以实现自己的(这是一个非常糟糕的主意)或使用常见的社区测试替代方案,如数据库记录而不是文件.
猜你喜欢
  • 2016-05-04
  • 2022-09-30
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 2011-04-02
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多