web-dev-qa-db-ja.com

別のコントローラーへのcodeigniterリダイレクト

ユーザーが承認されたら、ユーザーをメインページに誘導しようとしています。 login_checkコントローラーでユーザーチェックを行って$this->load->view('main');を追加していますページはロードできますが、メインページのサイトアドレスは引き続き表示されます

http:// myprojectname/login_check

でも見せたい

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);
    }

}
20
FlyingCat

まず、ユーザーが認証されているかどうかを確認するという非常に貧弱な仕事をしています(モデルにユーザー名/パスを渡すだけでは最適ではありません。モデルに送信する前に処理/確認する必要があります)。

ヘルパー 'URL'を含めることで簡単にリダイレクトを作成し、次を使用できます。

redirect('/controller/method');

または実世界の例では:

redirect('/main');

参照リンク

58
Jakub

別の方法がありますが、コントローラーがRestコントローラーの場合、redirect()に似ています

restserver

別のコントローラーのレストクライアントを使用して、サーバーコントローラーのメソッドを呼び出すことができます。

restclient

0
Sharon Abu
_redirect('controller/function');
_

たとえば、次のようなルートを持つredirect('auth/login');を使用できます

_$route['auth/login'] = 'auth/auth/index';
_
0
Sam Muthana