実行時にデータベースに手動で接続することにまだ問題があります。まだ答えが見つからないため、新しい質問を開きます。
これがケースです。
フォームで入力されたユーザー名とパスワードを検証するために、接続ユーザーでデータベースに接続します。次に、この新しい情報を使用して、ユーザーが有効な場合は、この新しいユーザー名とパスワードを使用してデータベースに接続する必要があります。Look には次のものが含まれます。
config/database.php
$active_record = TRUE;
$db['default']['hostname'] = 'host';
$db['default']['username'] = 'username';
$db['default']['password'] = 'pwd';
$db['default']['database'] = 'dbname';
$db['default']['dbdriver'] = 'oci8';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'WE8ISO8859P1';
$db['default']['dbcollat'] = '';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = FALSE;
$db['default']['stricton'] = FALSE;
次に、ログインコントローラーで: controllers/login.php
public function __construct(){
parent::__construct();
$this->output->enable_profiler(TRUE);
$this->CI =& get_instance();
$this->db_con = $this->CI->load->database('default', FALSE, TRUE);
$this->load->model('Login_model');
session_start();
}
public function index(){
if (isset($_POST['ingresar'])){
$d['data'] = $this->Login_model->Obtener_usuario($_POST['usuario']);
$_SESSION['logueo'] = $d['data']->row();
if (empty($_SESSION['logueo'])){
$d['error'] = 2;
}
else{
if (is_null($_SESSION['logueo']->USER_ORACLE)){
$d['error'] = 1;
}
if (!is_null($_SESSION['logueo']->N_SECUENCIA)){
cargar_var_sesion($_POST['usuario'], $_SESSION['logueo']->USER_ORACLE, $_SESSION['logueo']->N_SECUENCIA, $_SESSION['logueo']->C_USR_NOM_APE);
$db['limited']['hostname'] = 'samehost';
$db['limited']['username'] = $_POST['usuario'];
$db['limited']['password'] = $_POST['clave'];
$db['limited']['database'] = 'samedbname';
$db['limited']['dbdriver'] = 'oci8';
$db['limited']['dbprefix'] = '';
$db['limited']['pconnect'] = FALSE;
$db['limited']['db_debug'] = TRUE;
$db['limited']['cache_on'] = FALSE;
$db['limited']['cachedir'] = '';
$db['limited']['char_set'] = 'WE8ISO8859P1';
$db['limited']['dbcollat'] = '';
$db['limited']['swap_pre'] = '';
$db['limited']['autoinit'] = FALSE;
$db['limited']['stricton'] = FALSE;
$active_group = 'limited';
$this->db = $this->CI->load->database('limited', FALSE, TRUE);
redirect('inicio', 'location');
}
else{
$d['error'] = 2;
}
}
}
else{
$d['error'] = 0;
}
$this->load->view('/componentes/header');
$this->load->view('/componentes/menu_sin_login');
$this->load->view('/login/login', $d);
$this->load->view('/componentes/footer');
}
このコントローラー内ではすべて問題ありませんが、リダイレクトが実行されると (さまざまなモデルが読み込まれます)、たとえば tareas_model.php のように、最初の行で同じエラーが発生し続けます。
モデル/tareas_model.php
function __construct()
{
parent::__construct();
$query = $this->db->query('ALTER SESSION SET nls_sort = \'SPANISH\'');
}
エラーは次のとおりです。
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Inicio::$db
Filename: core/Model.php
Line Number: 50
Fatal error: Call to a member function query() on a non-object in /var/www/crm/application/models/tareas_model.php on line 8
また、$this->db をセッション変数として設定しようとしましたが、同じエラーが発生し続け、かなりおかしくなりました。オンラインで見つけたものはすべて試しましたが、うまくいきませんでした。
何か助けはありますか?