凌的博客

您现在的位置是: 首页 > 学无止境 > PHP > 

PHP

php sesson数据库存储

2022-03-24 PHP 302
<?php
/* *
CREATE TABLE `prefix_session` (
    `session_id` VARCHAR(255) NOT NULL,
    `session_expire` INT(11) UNSIGNED NOT NULL,
    `session_data` BLOB NULL,
    UNIQUE INDEX `session_id` (`session_id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
 */
class DbSesson implements SessionHandlerInterface
{
    private $link;

    public function open($savePath, $sessionName)
    {
        $link = mysqli_connect("127.0.0.1", "root", "root", "testdb");
        if ($link) {
            $this->link = $link;
            return true;
        } else {
            return false;
        }
    }

    public function close()
    {
        mysqli_close($this->link);
        return true;
    }

    public function read($id)
    {
        $result = mysqli_query($this->link, "SELECT session_data FROM prefix_session WHERE session_id = '" . $id . "' AND session_expire > '" . date('Y-m-d H:i:s') . "'");
        if ($row = mysqli_fetch_assoc($result)) {
            return $row['session_data'];
        } else {
            return "";
        }
    }

    public function write($id, $data)
    {
        $DateTime = date('Y-m-d H:i:s');
        $NewDateTime = date('Y-m-d H:i:s', strtotime($DateTime . ' + 1 hour'));
        $result = mysqli_query($this->link, "REPLACE INTO prefix_session SET session_id = '" . $id . "', session_expire = '" . $NewDateTime . "', session_data = '" . $data . "'");
        if ($result) {
            return true;
        } else {
            return false;
        }
    }

    public function destroy($id)
    {
        $result = mysqli_query($this->link, "DELETE FROM prefix_session WHERE session_id ='" . $id . "'");
        if ($result) {
            return true;
        } else {
            return false;
        }
    }

    public function gc($maxlifetime)
    {
        $result = mysqli_query($this->link, "DELETE FROM prefix_session WHERE ((UNIX_TIMESTAMP(session_expire) + " . $maxlifetime . ") < " . $maxlifetime . ")");
        if ($result) {
            return true;
        } else {
            return false;
        }
    }
}

$handler = new DbSesson();
session_set_save_handler($handler, true);

session_start();

$_SESSION['var1'] = "Hello db sesson!";

print_r($_SESSION);


文章评论

0条评论