database.phpでログインしたユーザーの資格情報に基づいて異なるデータベースに動的に切り替えますか?
<?php
class Database extends CI_Controller {
public $branch_db;
function __construct($company_name, $branch_name) {
parent::__construct();
$branch_db = $this->load->database($company_name.'_db_'.$branch_name);
}
}
?>
Account_model.php
protected function verifyLogin($username, $password) {
$this->db->trans_start();
$sql = "SELECT password, company_id, branch_id
FROM account
WHERE username = {$username}"; //Prepare statement
$query = $this->db->query($sql);
$result_num = $query->num_rows();
if ($result_num == 1) {
$first_row = $query->row();
$stored_password = $first_row->password;
if (password_verify($password, $stored_password)) {
//Successful login
//Get company name
//Get branch name
//Set database
//Pass company_name, branch_name
//All models must be able to access the dynamically loaded database
}
}
$this->db->trans_complete();
}
アクセスすることができ、複数のデータベースがあります。各ブランチには、動的に作成されたデータベースがあります。各ブランチにはアカウントがあります。アカウントがログインすると、そのアカウントに関連するデータベースにアクセスします。そのデータベースは、ユーザーがログアウトするまでセッション全体に使用されます。
私は有効なユーザー名とパスワードの組み合わせのマスターリストが保存されているメインデータベースを持っています。私はdatabase.php
のconfig
フォルダに宣言しました。しかし、ユーザーがログインした後、そのユーザーアカウントに関連するデータベースに切り替えて、データにアクセスできるようにする必要があります。
モデルにこのコントローラを使用すると、すべて同じデータベースにアクセスできます($this->load->database()
を何度もやり直す必要はありません)。あなたのdatabase.phpでは
手段を?モデルのすべての関数にデータベースをロードしますか? –
ええ、かなり私は推測する?同様に、私はそのようなデータベースを '$ this-> db'と同等にしたいと思います。すべてのモデルにグローバルにアクセスできるようにしてください(各データベースは同じテーブル構造を持っています)@JayminsFakeAccount – herondale