我正在尝试使用php和mysql设置用户登录/注销系统。我在这里找到了一些关于这个主题的文档:http://phpmaster.com/writing-custom-session-handlers/。我正试图跟随它(我也一直从其他来源拉-但这是主要的一个)。
这是我的一些代码从"my_session_handler.php":
class MySessionHandler implements SessionHandlerInterface {
private $path = session_save_path();
private $name = session_name();
private $sessionId = session_id();
function open($path, $name) {
$db = new PDO("mysql:host=localhost;dbname=itit", "root", "bonjour3");
$sql = "INSERT INTO session SET session_id =" . $db->quote($sessionId) . ", session_data = '' ON DUPLICATE KEY UPDATE session_lastaccesstime = NOW()";
$db->query($sql);
...
我的问题是,在我上面引用的例子中,"$path"one_answers"$name"变量来自哪里?我将它们声明为私有变量,并使用一些函数来做我认为需要做的事情。但在网站上,我跟着-这两个变量都没有得到声明-随着$sessionId。我看到read函数返回$data。所以我在"write"函数中使用它,像这样:
function write($sessionId, this.read($sessionId)) {
$db = new PDO("mysql:host=localhost;dbname=itit", "root", "bonjour3");
$sql = "INSERT INTO session SET session_id =" . $db->quote($sessionId) . ", session_data =" . $db->quote($data) . " ON DUPLICATE KEY UPDATE session_data =" . $db->quote($data);
$db->query($sql)
}
我这样做对吗?
这些参数由默认会话保存处理程序使用,该处理程序将会话数据保存在文件中。它们来自php.ini
文件,并用于形成文件名。当PHP调用open()
方法时,它们被提供给你的处理程序。
如果你正在编写一个自定义处理程序,你可以忽略它们,就像那个网页上的代码一样。