Rumah php教程 PHP源码 php session 写入数据库

php session 写入数据库

Nov 08, 2016 pm 02:00 PM

<?php
 
#
#   codeMaker Alpha 0.1.1 ( haowei.me )
#   This framework comply with the GPL license agreement
#
 
class session_handler {
     
    protected $maxlifetime = null;
    protected $dbHandle = null;
    public $config = null;
     
    public static function init($args) {
        return new self($args);
    }
     
    public function __construct($args) {
         
        $this->config = $args;
        $this->maxlifetime = get_cfg_var("session.gc_maxlifetime");
        session_set_save_handler(
        array($this, "open"),
        array($this, "close"),
        array($this, "read"),
        array($this, "write"),
        array($this, "destroy"),
        array($this, "gc"));
         
    }
     
    public function open() {
        $this->link = mysqli_connect(
        $this->config[&#39;host&#39;], 
        $this->config[&#39;user&#39;], 
        $this->config[&#39;password&#39;], 
        $this->config[&#39;database&#39;]);
        mysqli_set_charset($this->link, "utf8");
        $sql = &#39;CREATE TABLE IF NOT EXISTS `%s` (
        `session_id` varchar(255) NOT NULL,
        `session_data` text,
        `session_expires` char(10) NOT NULL,
        PRIMARY KEY (`session_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;&#39;;
        $sql = sprintf($sql, $this->config[&#39;table&#39;]);
        mysqli_query($this->link, $sql);
        return true;
    }
     
    public function close() {
        return true;
    }
     
     
    public function read($session_id) {
        if(empty($session_id)) return null;
         
        $sql = &#39;SELECT `session_data` AS `data` FROM `%s` WHERE `session_id` = "%s" AND `session_expires` > "%u"&#39;;
        $sql = sprintf($sql, 
        mysqli_real_escape_string($this->link, $this->config[&#39;table&#39;]), 
        mysqli_real_escape_string($this->link, $session_id),
        time());
         
        $result = mysqli_query($this->link, $sql);
        $row = mysqli_fetch_assoc($result);
        return $row[&#39;data&#39;];
         
    }
     
    public function write($session_id, $session_data) {
        if(empty($session_id)) return null;
         
        $newExpires = time() + $this->maxlifetime;
        $sql = &#39;REPLACE INTO `%s` SET `session_id` = "%s", `session_data` = "%s", `session_expires` = "%u"&#39;;
        $sql = sprintf($sql, 
        mysqli_real_escape_string($this->link, $this->config[&#39;table&#39;]), 
        mysqli_real_escape_string($this->link, $session_id),
        mysqli_real_escape_string($this->link, $session_data),
        $newExpires);
         
        $result = mysqli_query($this->link, $sql);
        return mysqli_affected_rows($this->link);
         
    }
     
    public function destroy($session_id) {
        $sql = &#39;DELETE FROM `%s` WHERE `session_id` = "%s"&#39;;
        $sql = sprintf($sql, 
        mysqli_real_escape_string($this->link, $this->config[&#39;table&#39;]), 
        mysqli_real_escape_string($this->link, $session_id));
 
        $result = mysqli_query($this->link, $sql);
        return mysqli_affected_rows($this->link);
    }
     
    public function gc() {
        $sql = &#39;DELETE FROM `%s` WHERE `session_expires` < "%u"&#39;;
        $sql = sprintf($sql, 
        mysqli_real_escape_string($this->link, $this->config[&#39;table&#39;]), 
        time());
         
        $result = mysqli_query($this->link, $sql);
        return mysqli_affected_rows($this->link);
    }
     
}
 
class session {
 
    public static $collection = null;
     
    public static function open($clean = false, $token = false) {
        if($clean) ob_end_clean();
        if($token) session_id($token);
        session_start();
        self::$collection = $_SESSION;
    }
     
    public static function id() {
        $num_args = func_num_args();
        if($num_args) {
            $args = func_get_arg(0);
            return session_id($args);
        }else{
            return session_id();
        }
    }
     
    public static function get($name) {
        return isset($_SESSION[$name]) ? $_SESSION[$name] : null;
    }
     
    public static function set($name, $value) {
        $_SESSION[$name] = $value;
        return true;
    }
     
    public static function delete($name) {
        if(!isset($_SESSION[$name])) return null;
        unset($_SESSION[$name]);
        return true;
    }
     
    public static function destroy() {
        session_destroy();
    }
     
}
 
 
 
$config = array(
"host"=> "127.0.0.1",
"user"=> "root",
"password"=> "123456",
"database"=> "test",
"charset"=> "utf8",
"table"=> "user_session");
 
session_handler::init($config);
session::open();
session::set("profile", array("id"=> 1, "user"=> "haowei", "vip-level"=> 6));
Salin selepas log masuk

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)