enuk

Session - MySQL Handler


    <?php
    require('session_mysql_handler.php');
    $objSessionHandler = new MySQLSessionHandler();
    session_set_save_handler($objSessionHandler, true);
    ?>
    

    <?php
    class MySQLSessionHandler implements SessionHandlerInterface
    {
    
    
        public function open($savePath, $sessionName) {
    
                return TRUE;
                
        }
    
    
        public function read($sessionId) {
    
            try {
    
                $stmt = $mysqli->prepare("SELECT `session_data` FROM `sessions` WHERE `session_id` = ?");
                $stmt->execute([$sessionId]);
                $stmt->bind_result($sessionData);
                $stmt->fetch();
                $stmt->close();
    
                return $sessionData ? $sessionData : '';
    
            } catch (Exception $e) {
                
                return '';
    
           }
    
        }
    
    
        public function write($sessionId, $sessionData) {
    
            $time = time();
                
            try {
    
                $stmt = $mysqli->prepare("REPLACE INTO `sessions` (`session_id`, `created`, `session_data`) VALUES (?,?,?)");
                $stmt->execute([$sessionId, $time, $sessionData]);
                $stmt->close();
    
                return TRUE;
    
            } catch (Exception $e) {
    
                return FALSE;
    
            }
    
        }
    
    
        public function destroy($sessionId) {
    
            try {
    
                $stmt = $mysqli->prepare("DELETE FROM `sessions` WHERE `session_id` = ?");
                $stmt->execute([$sessionId]);
                $stmt->close();
    
                return TRUE;
    
            } catch (Exception $e) {
                
                return FALSE;
                
            }
    
        }
    
    
        public function gc($maxlifetime) {
            
            $past = time() - $maxlifetime;
    
            try {
    
                $stmt = $mysqli->prepare("DELETE FROM `sessions` WHERE `created` < ?");
                $stmt->execute([$past]);
                $stmt->close();
    
                return TRUE;
    
            } catch (Exception $e) {
    
                return FALSE;
    
            }
    
        }
    
    
        public function close() {
    
            return TRUE;
    
        }
        
        
    }
    ?>
    
session_mysql_handler.php