5

CI アプリにログイン コントローラーがあります。

function index()
{
    if($this->session->userdata('logged_in')==TRUE) 
        redirect('/success');

    $data['error']=$this->session->flashdata('errormessage');
    $this->load->view('auth',$data);
}

function process_login()
{

    $username=$this->input->post('username');
    $password=$this->input->post('password');

    if($password == "good_pwd")
    {
    $data=array('username'=>$username,'logged_in'=>TRUE);
    $this->session->set_userdata($data);
    redirect('/success');   
    }   
    else 
    {
        $this->session->set_flashdata('errormessage','Login failed');
        redirect('/failed');
    }
}

これは、メイン コントローラーのセキュリティ コンストラクターです。

function __construct()
{
    parent::__construct();
    if($this->session->userdata('logged_in')!=TRUE)  redirect('/login');
}

www.mysite.com/main/function1/ にアクセスしようとしてログインしていない場合、コンストラクターがログイン ページにリダイレクトします。正しくログインすると、代わりにメイン ホームページにリダイレクトされます。ログインページにリダイレクトされたページ (この例では www.mysite.com/main/function1/ ) - どうすればよいですか?

4

2 に答える 2

22

このためにリクエスト URI をセッションに保存する必要があるため、次の行に沿って前のページに戻ることができます。

function __construct()
{
    parent::__construct();
    if($this->session->userdata('logged_in')!=TRUE) {
        $this->load->helper('url');
        $this->session->set_userdata('last_page', current_url());
        redirect('/login');
    }
}

...その後、セッションデータを使用してリダイレクトできます

于 2012-08-30T09:56:58.213 に答える
0

のコントローラーにリダイレクト URL を設定します。

$redirect_to = "where you want to redirect after login";
$this->session->set_userdata('redirect_to',$redirect_to);

ユーザーコントローラーでこのようなものを使用します

  $redirect_to = $this->input->post('redirect_to') ? $this->input->post('redirect_to') : $this->session->userdata('redirect_to');

    $this->template->build('login', array(
                '_user' => $user,
                'redirect_to' => $redirect_to,
            ));
于 2012-08-30T12:09:41.360 に答える