什么是最安全的共享对象PHP的方法

时间:2012-03-26 09:03:10

标签: php object serialization

我必须在PHP中共享一个配置对象的实例。 该对象包含db username和db password。 db用户可以更改。所以我必须分享te对象实例。

实施例

默认数据库用户是'默认'。 default只具有从db中选择数据的权限。

当网站用户以admin身份登录网站时,db user必须更改为“admin”。 admin有权使用SELECT,UPDATE,DELETE等。

当网络用户以普通用户身份登录时,db用户必须更改为“normal”,normal具有SELECT,UPDATE等权限。

我要分享配置实例。分享这个对象最安全的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用singleton pattern以便在应用程序中的任何位置访问一个实例。

我还建议您使用单例作为连接处理程序,您可以在其中获取,设置和维护连接,您还可以在其中存储登录凭据。

示例:

<?php
class ConnectionManager
{
    private $hostname;
    private $username;
    private $password;

    private $connections = array();

    private static $instance = null;

    public static function getInstance ()
    {
        if (self::$instance == null)
            self::$instance = new self();
        return self::$instance;
    }

    private function __construct ()
    {}

    public function newConnection ($name, $database)
    {
        // Connect to database using predefined credentials

        $this->connections[$name] = new PDO();
    }

    public function __get ($name)
    {
        if (!array_key_exists($name, $this->connections))
            die("Could not get connection: $name");

        return $this->connections[$name];
    }
}

// Create a new connection named database1
ConnectionManager::getInstance()->newConnection('database1', 'database_name');

// Load connection database1
ConnectionManager::getInstance()->database1->prepare("SELECT * FROM table");
?>