New Page  |  Edit Page

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