我有一个将被许多数据库使用的应用程序。要选择具有应用程序数据的数据库,我有一个包含连接参数(主机,用户名,密码,数据库等)的数据库。动态数据源和CakePHP 3中的全局?
问题是,此动态创建的数据源不适用于其他应用程序。
控制器代码
$data = $this->request->data;
$connection = ConnectionManager::get("default");
$query = "SELECT * FROM clients WHERE client_id = ".$data['codigo'];
$result = $connection->execute($query)->fetchAll('assoc');
ConnectionManager::drop('default');
$config = ConnectionManager::config('connection', [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => $result[0]['host'],
'username' => $result[0]['username'],
'password' => $result[0]['password'],
'database' => $result[0]['database'],
'encoding' => 'utf8',
'timezone' => 'UTC',
'flags' => [],
'cacheMetadata' => true,
'log' => false,
'quoteIdentifiers' => false,
'url' => env('DATABASE_URL', null),
]);
$connection = ConnectionManager::get('connection');
ConnectionManager::alias('connection', 'default');
return $this->redirect(['controller' => 'Mains', 'action' => 'index']);
此重定向后,显然其他控制器没有这个数据源。
Ouch,那是一个SQL注入漏洞!永远不要直接将用户数据插入查询! – ndm