2012-01-20 12 views
18

ユーザーが承認されたときに、そのユーザーをメインページに誘導しようとしています。私はまだcodeigniterが別のコントローラにリダイレクトする

http://myprojectname/login_check

を示したが、私はそれが

を表示したい私のlogin_checkコントローラにユーザチェックを行うと、ページがロードが、メインページでサイトのアドレスを指定でき $this->load->view('main');を追加しています

http://myprojectname/main

新しい 'メイン'コントローラを作成してビューを読み込む必要がありますか?私には重複しているようです。ここに私のコードです。すべての私のlogin_check.php

private function _user_check() 
{ 
    $this->load->model('user_query'); //load my model 
    $result=$this->user_query->query($this->input->post('username'),$this->input->post('password'))    

    if($result) //the user is in DB 
    { 
     $data['view']='main'; 
     $this->load->view('include/template', $data); 
     //the address bar shows http://myproject/login_check in main page  

    }else{ //the user is not in DB 

     $data['view']='login'; 
     $this->load->view('include/template', $data); 
    } 

} 

答えて

53

まずの

部分は、あなたが(ちょうど渡すユーザ名/モデルに渡し、ユーザーが認証されるかどうかをチェックするのは非常に貧弱な仕事をしていることは最善ではありません、/チェックを処理しなければなりませんそれはモデルに送信する前に)。あなたが作ることができる

は、 'URL' ヘルパーを含むことにより、容易にリダイレクトし、簡単に使用します。

redirect('/controller/method'); 

や現実世界の例では:

redirect('/main'); 

Reference Link

+1

のメソッドを呼び出すために別のコントローラに残りのクライアントを使用できますか?もしそうなら、私はすでにコードの他の部分でやっています。 mysql_real_escape_stringを実行する必要がありますか?私は$ this-> input-> postを使っているので、Codeigniterはすでにそれを適用していると思った。 Thans。 – FlyingCat

+1

あなたは上手くいきません。** Active Query **を使用すると、CIはそれをすべて処理しますが、SQLクエリを自分で書く場合は、あなたにエスケープするために '$ this-> db-> escape()'を使う必要があります「ユーザー名」または「パスワード」と言ってください(余分な準備をすることは決してありません) – Jakub

+0

ok。助けてくれてありがとう。 :D – FlyingCat

0

別の方法がありますコントローラがレストコントローラの場合は、redirect()と同様です。

restserver

あなたは、あなたの平均form_validationをモデル化するために送信する前に、「プロセス/チェック」と言った場合は、サーバーコントローラ

restclient

関連する問題