PHP在类中存储会话数据

时间:2013-06-13 16:01:46

标签: php database class session

我正在努力将PHP会话变量存储到数据库中,并且存在一些问题。我想知道你们是否可以给我一个更好的解决方案,或者如果我的理解有任何不妥之处请告诉我。谢谢。

首先,我将用户输入存储在PHP会话变量中。我无法将此会话数据插入数据库,因为我需要等待另一个用户输入(此输入将与会话数据同时插入数据库)。会话有一个时间限制(60秒)。我需要一个临时存储会话数据的地方。如果会话结束,数据就会消失。

我认为存储会话数据的地方将是对象。也许创建一个类来存储会话数据。当用户提供另一个输入时,从该对象中提取数据并插入数据库。我没有在PHP中使用任何面向对象的概念,所以我想知道这个过程是否会起作用。

非常感谢你。

1 个答案:

答案 0 :(得分:3)

我处理会话的方式是使用单例模式:

class Session {
    private static $_instance;
    private $id;
    private $data;

    private function __clone() {}
    private function __construct() {
        session_start();

        $this->id   = session_id();
        $this->data =& $_SESSION;
    }

    public static function open() {
        if ( ! (self::$_instance instanceof self)) {
            self::$_instance = new self();
        }

        return self::$_instance;
    }

   public function __set($name, $value) {
     $this->data[$name] = $value;
   }

   public function __get($name) {
     return isset($this->data[$name]) ? $this->data[$name] : null;
   }
}

这样您的会话数据就会存储在 $ data 变量中,并且可以通过重载来访问。