2012-03-26 99 views
0

我必须在PHP中共享配置对象的实例。 该对象包含db用户名和db密码。数据库用户可以更改。所以我必须分享对象实例。什么是共享对象的最安全方式PHP

例子。

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

当网站用户以admin身份登录网站时,db用户必须更改为“admin”。管理员有权选择,UPDATE,DELETE等

当作为普通用户,数据库用户拥有网络用户logges更改为“正常”正常有权利SELECT,UPDATE等

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

回答

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"); 
?> 
相关问题