php - 如何限制其他类访问mysql连接?

标签 php mysql

喂!我们有与 mysql 连接的核心类,而不是我们包含的插件,我们需要该插件在没有核心类方法的情况下无法访问我们的数据库。

index.php

<?php
    class Core
    {
        function connect()
        {
            $db = @mysql_connect($host, $user, $pass);
            @mysql_select_db($base, $db);
        }

        function query($sql)
        {
            return mysql_query($sql);
        }
    }

    global $c;
    $c = new Core();

    include('plugin.php');
    $p = new Plugin();
    echo $p->not_work_connection();
    echo $p->work_connection();
?>

plugin.php

<?php
    class Plugin
    {
        function not_work_connection()
        {
            $sql = 'SELECT * FROM `net_country` LIMIT 0 , 1';
            $result = mysql_query($sql); 
            while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
            {
                return print_r($row, 1);
            }
        }

        function work_connection()
        {
        global $c;
            $result =$c->query('SELECT * FROM `net_country` LIMIT 0 , 1'); 
            while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
            {
                return print_r($row, 1); 
            }
        }
    }
?>

我需要限制对包含脚本的访问,但他们可以使用核心方法进行查询。我怎样才能做到?

最佳答案

没有第二个参数的 mysql_query 使用 mysql_connect 使用的最后一个链接,所以你可以在真实连接之后创建一个虚拟连接:

<?php
class Core
{
    private $db;
    function connect()
    {
        $this->db = @mysql_connect($host, $user, $pass);
        @mysql_select_db($base, $db);

        //dummy 
        @mysql_connect();
    }

    function query($sql)
    {
        //notice second param
        return mysql_query($sql, $this->db);
    }
}

global $c;
$c = new Core();

include('plugin.php');
$p = new Plugin();
echo $p->not_work_connection(); //doing a mysql_query will use the dummy resource and fail
echo $p->work_connection();
?>

关于php - 如何限制其他类访问mysql连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858170/

相关文章:

mysql - 我无法连接到 phpmyadmin

java - 从 Java 调用存储过程

c# - 保持应用程序数据库不可知(ADO.NET 与封装数据库逻辑)

mysql - 为什么 Django 在添加新列时删除 SQL DEFAULT 约束?

php-mysql 回滚替代函数

php - 仅为 cli 启用禁用功能

php - 有没有办法阻止使用类似 Firebug 的工具编辑页面中的 HTML 和 CSS 内容?

php - 将 PHP 变量值传递到 JQuery 页面

php - 我需要获取年龄之间的mysql数据

php - 我应该如何避免多个类继承的需要