设置php会话(session_set_save_handler)

时间:2013-06-08 16:05:40

标签: php mysql function session session-set-save-handler

我正在尝试使用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”和“$ name”变量在哪里?我将它们声明为私有变量,并使用一些函数来完成我认为需要完成的任务。但是在我关注的网站上 - 这些变量都没有被声明 - 以及$ sessionId。我看到read函数返回$ data。所以我在“写”功能中使用它,如下所示:

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)
}

我这样做了吗?

1 个答案:

答案 0 :(得分:1)

这些参数由默认会话保存处理程序使用,该处理程序将会话数据保存在文件中。它们来自php.ini文件,用于形成文件名。当PHP调用open()方法时,它们被提供给你的处理程序。

如果您正在编写自定义处理程序,则可以忽略它们,因为该网页上的代码会执行此操作。