]> git.andy128k.dev Git - ipf.git/commitdiff
use PDO in session middleware
authorAndrey Kutejko <andy128k@gmail.com>
Sat, 30 Dec 2017 14:31:09 +0000 (15:31 +0100)
committerAndrey Kutejko <andy128k@gmail.com>
Sat, 30 Dec 2017 14:37:53 +0000 (15:37 +0100)
ipf/session/app.php

index 09b9f26b1ab71fe130ed04c08752200ea4f19798..0c0ad8987a30d3b69f70cad3f9be712ac390bf81 100644 (file)
@@ -106,53 +106,46 @@ class CookieSession extends Session
 
 class DBSession extends Session
 {
-    private static function query()
+    private static function getConnection()
     {
-        $connection = \PFF\Container::databaseConnection();
-        return new FluentPDO($connection);
+        return \PFF\Container::databaseConnection();
     }
 
     public static function getData($key)
     {
-        $data = self::query()
-            ->from('session')
-            ->where('session_key', $key)
-            ->fetch('data');
-        if ($data)
-            return unserialize($data);
+        $connection = self::getConnection();
+        $stmt = $connection->prepare('SELECT data FROM session WHERE session_key = :key');
+        $stmt->bindValue('key', $key, PDO::PARAM_STR);
+        $stmt->execute();
+        $row = $stmt->fetch(PDO::FETCH_ASSOC);
+        if ($row !== false)
+            return unserialize($row['data']);
         else
             return null;
     }
 
     public function delete()
     {
-        self::query()
-            ->deleteFrom('session')
-            ->where('session_key', $key)
-            ->execute();
+        $connection = self::getConnection();
+        $stmt = $connection->prepare('DELETE FROM session WHERE session_key = :key');
+        $stmt->bindValue('key', $key, PDO::PARAM_STR);
+        $stmt->execute();
 
         $this->key = null;
     }
 
     protected function save()
     {
-        $params = array(
-            'data' => serialize($this->data),
-            'updated_at' => gmdate('Y-m-d H:i:s', $this->updatedAt()),
-        );
-
+        $connection = self::getConnection();
         if ($this->key) {
-            self::query()
-                ->update('session')
-                ->where('session_key', $this->key)
-                ->set($params)
-                ->execute();
+            $stmt = $connection->prepare('UPDATE session SET data = :data, updated_at = NOW() WHERE session_key = :key');
         } else {
-            $params['session_key'] = $this->key = self::getNewSessionKey();
-            self::query()
-                ->insertInto('session', $params)
-                ->execute();
+            $this->key = self::getNewSessionKey();
+            $stmt = $connection->prepare('INSERT INTO session (session_key, data) VALUES (:key, :data)');
         }
+        $stmt->bindValue('key', $this->key, PDO::PARAM_STR);
+        $stmt->bindValue('data', serialize($this->data), PDO::PARAM_STR);
+        $stmt->execute();
     }
 
     private static function getNewSessionKey($secret_key=null)
@@ -162,4 +155,3 @@ class DBSession extends Session
         return md5(microtime().rand(0, 123456789).rand(0, 123456789).$secret_key);
     }
 }
-