首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >共享对象最安全的方式是什么

共享对象最安全的方式是什么
EN

Stack Overflow用户
提问于 2012-03-26 17:03:10
回答 1查看 90关注 0票数 0

我必须在PHP中共享一个配置对象的实例。此对象包含db用户名和db密码。db用户可以更改。所以我必须共享对象实例。

举例说明。

默认数据库用户为' Default‘。default只有从数据库中选择数据的权限。

当网站用户登录到网站作为管理员,数据库用户必须更改为‘管理员’。管理员有权选择,更新,删除等。

当web用户以普通用户身份登录时,db用户必须更改为“正常”普通用户具有选择、更新等权限。

我必须共享配置实例。共享此对象的最安全方式是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-26 17:10:22

您可以使用singleton pattern来保持从应用程序中的任何位置都可以访问一个实例。

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

示例:

代码语言:javascript
复制
<?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");
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9869277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档