php - 如何在php中获取特定的 session 路径?

标签 php mysql

我想将特定 session 保存为路径。所以如果我从 MySQL 数据库中删除它, session 也会被删除......

这可能吗? 谢谢。

最佳答案

好的,这就是我所做的...请检查此代码是否正确,将能够将 $_SESSION['email'] 作为路径插入到数据库...

   <?php session_set_save_handler(
        "openSession",
        "closeSession",
        "readSession",
        "writeSession",
        "destroySession",
        "gcSession"
    ); 

$mysqli = new mysqli("localhost", "root", "**password**", "**table**");

class Session {
    /** @var Database */
    private $mysqli;

}


function __construct()
{
    // instance of new Database object
    $this->mysqli = CDatabase::init(); //check this

    // set handler to overide SESSION
    @session_set_save_handler(
        array($this, "openSession"),
        array($this, "closeSession"),
        array($this, "readSession"),
        array($this, "writeSession"),
        array($this, "destroySession"),
        array($this, "gcSession")
    );

    // start the session
    session_start();
}


public function openSession(
    // if database connection exists
    if($this->_db){
        return true;
    }
    return false;
}


public function closeSession()
{
    // if database connection is closed
    if($this->mysqli->close()){
        @session_write_close();
        return true;
    }
    return false;    
}

 $email = $_SESSION['email'];
public function readSession($email)
{
    $result = $this->mysqli->select(
        "SELECT session_data FROM sessions WHERE session_id = :session_id",
        array(":session_id"=>$email)
    );
    return isset($result[0]) ? $result[0] : "";
}


public function writeSession($email)
{        
    $result = $this->mysqli->insert(
        "INSERT INTO table VALUES (session_id = :session_id)",
        array(":session_id"=>$email)
    );
    if(isset($result[0])){
        $result = $this->mysqli->update(
            "sessions",
            array(
                "expires_at"=>time()+$this->getTimeout(),
                "session_data"=>$data
            ),
            "session_id = :session_id",
            array(":session_id"=>$id)
        );
    }else{
        $result = $this->_db->insert(
            "sessions",
            array(
                "session_id"=>$email,
                "expires_at"=>time()+$this->getTimeout()

            )
        );
    }

    return true;
}

public function destroySession($email)
{
    return $this->_db->delete(
        "sessions", "session_id = :session_id", array(":session_id"=>$email)
    );        
}


public function gcSession($maxLifetime)
{
    return $this->_db->delete(
        "sessions", "expires_at < :expires_at", array(":expires_at"=>time())
    );
}

    ?>

关于php - 如何在php中获取特定的 session 路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28731014/

相关文章:

mysql - 如何按手动顺序取一些行,然后按常规方式休息

Mysql触发器使用匹配数据插入另一个表行

php - 以下陈述之间的主要区别是什么?

javascript - 谷歌地图获取中心不返回有效的经度

PHP 返回一个字符串为 false

javascript - 将 Jvectormap jQuery 文件导入 MySql 的最佳实践

php - 为什么我在 Wordpress 中的 AJAX 请求不起作用

php - 如果值为 1,则 MySQL PHP 显示文本

php - PHP 中的 "Hello, World"什么都不显示

php - 从数据库检索盐时,如何在 codeigniter 中使用带密码的盐