1

目前我正在编写一个 PHP 自定义会话处理程序,但我遇到了一个基本问题

  1. 我是否需要在初始化会话处理程序之前、之后或在会话处理程序类本身中启动会话?
  2. 我应该在哪里调用 session_set_save_handler() (目前我在 Session 处理程序构造函数中调用它)?

如果我在初始化处理程序之前启动会话,数据库将不会被填充,并且我在 apache 错误日志/网页中看不到任何错误。此外,我将像正常情况一样被重定向到起始页。

然后我在初始化后尝试启动会话,我可以看到一些错误,我不会被重定向到起始页面。

在最后一种情况下,我尝试在 session_set_save_handler() 之前和之后的构造函数中启动它,它的行为与之前描述的相同。

谁能告诉我解决这个问题的正确方法?

4

1 回答 1

2

我是否需要在初始化会话处理程序之前、之后或在会话处理程序类本身中启动会话?

创建类的实例后,调用session_start()

<?php
class MySessionHandler implements SessionHandlerInterface
{
    // implement interfaces here
}

$handler = new MySessionHandler();
session_set_save_handler($handler, true);
session_start();

// proceed to set and retrieve values by key from $_SESSION

我必须在哪里调用 session_set_save_handler() (目前我在 Session 处理程序构造函数中调用它)?

请参考上面的例子。

有关 PHP 手册的更多详细信息,请点击此处

于 2013-08-13T12:46:30.707 回答