2011-07-25 9 views
2

私は難しい場所とCI問題のある岩の間にいます。ユーザーが入力するユーザー名とパスワードでDBに動的に接続する必要があります。それらはOracleユーザー名とパスワードです。だから、その情報を使って私はDBに接続し、アプリケーション内のさまざまなモデルとコントローラのためにそれを保持しなければなりません。CodeIgniter手動データベース接続の問題 - 用法

私はログインコントローラとログインビューを持っています。私はdatabase.phpとconfig.phpファイルからデータベースの自動ロードを無効にしました。

その後、login.phpコントローラは次のようになります。それはとき、5行目で、データベース接続を認識しないため、コントローラは他のコントローラ「contactos」すべてのクラッシュにリダイレクトする場合

class Login extends CI_Controller { 

public function index() 
{ 
    $this->output->enable_profiler(TRUE); 

    if (isset($_POST['ingresar'])){ 

     $db['hostname'] = 'myhost'; 
     $db['username'] = $_POST['usr']; 
     $db['password'] = $_POST['pwd']; 

     $db['database'] = 'DBname'; 
     $db['dbdriver'] = 'oci8'; 
     $db['dbprefix'] = ''; 
     $db['pconnect'] = FALSE; 
     $db['db_debug'] = FALSE; 
     $db['cache_on'] = FALSE; 
     $db['cachedir'] = ''; 
     $db['char_set'] = 'WE8ISO8859P1'; 
     $db['dbcollat'] = ''; 
     $db['swap_pre'] = ''; 
     $db['autoinit'] = TRUE; 
     $db['stricton'] = FALSE; 



     $db['DB'] = $this->load->database($_SESSION, TRUE); 

     redirect('contactos', 'location'); 
    } 
    else{ 
     $this->load->view('/componentes/header'); 
     $this->load->view('/componentes/menu_sin_login'); 
     $this->load->view('/login/login'); 
     $this->load->view('/componentes/footer'); 
    }  
} 

モデルをロードしようとしています。

class Contactos extends CI_Controller { 
public function __construct() 
{ 
    parent::__construct(); 
    $this->load->model('Contactos_model'); 
    $this->load->model('Componentes_model');..... 

あなたが提供できるすべてのヘルプは本当にいただければ幸いです。

よろしく、$db上記の文脈ではV

答えて

0

。それは本当に、スクリプトの広い文脈については何もしないことを意味し、ローカル変数、で、あなたはどこにでもそれができると、それを保存していません再利用する。 DBをロードするために

、あなたはおそらく呼び出したい:

// you may want to think about using an encrypted CI session instead? 
$_SESSION['DB'] = $db; 

、その後、contactosでは、あなたが望む:

class Contactos extends CI_Controller { 
public function __construct() 
{ 
    parent::__construct(); 
    $this->load->database($_SESSION['DB']); 
    // continue as above. 
+0

こんにちは再び! 助けてくれてありがとうが、私はまだかなり失われていて、この仕事をすることはできません。 コードを次のように変更しました。 /views/login/login.phpには、ユーザー名とパスワードの入力に対応する入力が追加されています。これは投稿情報を送信しています。 /controllers/login.php クラスログインは拡張CI_Controller { パブリック関数の__construct() \t { \t \t親:: __構築物(); \t \t $ this-> output-> enable_profiler(TRUE); } – Veronica

+0

ここでは正しいコメントです: こんにちは...私はあなたの提案を使用しますが、動作させることはできません。セッション変数にオブジェクトをロードすると、モデルはそれを読み込みません。 print_r()出力の一部... => [DB] => CI_DB_oci8_driverオブジェクト しかし$ this-> load-> database($ _ SESSION ['DB']、TRUE);\t $ query = $ this - > $ _ SESSION ['DB'] - >クエリ( 'ALTER SESSION SET nls_sort = \' SPANISH \ ''); モデルにエラーがあります。どんな手掛かり??? 多くのご協力ありがとうございます。 – Veronica

関連する問題