0

私は現在、フレームワークとして codeigniter を使用して MVC の基本を学んでおり、ログイン ページを作成しました。ユーザーがログインしてセッションデータを保存した後、ユーザーをリダイレクトしましたが、問題はログインした後(別のページにリダイレクトした場所)、[戻る]ボタンを押した後、アドレスのURLを強調表示しない限りログインページが表示されたままですバーを押して Enter キーを押すと、リダイレクトされたページに戻ります。これは私が行ったセッションチェックが原因であることは承知していますが、ユーザーがログアウトしない限りログインページに戻らないように解決する方法についての解決策が必要です。ログアウトしたユーザーが再度ログインしない限り、特定のページに戻らないのと同じことです。

詳細を説明すると、私がまさに望んでいたことは、Facebook ログインの場合と同じです。ログインしてブラウザの [戻る] ボタンをクリックした後でも、Facebook はログイン ページではなくホームページにリダイレクトします。同じことがログアウトに行きます。

さて、ここまでが私のコントローラーです。これですべてが説明できると思います。コードに冗長性を加えた場合は修正してください。また、私が初心者であることを理解してください。:)

public function index()
{
    $data['error'] = null;
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $data['login'] = $this->login_model->get_login_credentials($username,$password);
    $data['session'] = $this->login_model->get_session($username);


    //CHECK IF THE $PAGE VIEW IS EXISTING
    if ( ! file_exists('application/views/pages/login.php'))
    {
        // IF PAGE DOESN'T EXISTS SHOW 404 ERROR
        show_404();
    }

    if(($this->input->post('login')=='Login'&&$data['login']==1)||($username==$data['session']['username'])){
        //SUCCESS LOGIN
        $this->load->helper('url');  
        redirect('news');
    }

    if($this->input->post('login')=='Login'&&$data['login']!=1){
        //LOGIN FAILED
        $data['error'] = "Invalid login credentials.";
    }


    //FOR THE TITLE PART
    $data['title'] = ucfirst('login'); 

    $this->load->view('pages/login/login', $data);
    $this->load->view('templates/footer', $data);

}
4

3 に答える 3

0

最初に、使用できるセッションデータを確認します:

$this->session->userdata('item');

ここ

$username==$data['session']['username'])

そしておそらく、インデックスの開始時に次のように 1 つのチェックを設定できます。

if($this->session->userdata('username'))
redirect('news');

これらの関数を呼び出す前に、必要なすべてのヘルパーとライブラリをロードすることを忘れないでください..

セッションについては、http://codeigniter.com/user_guide/libraries/sessions.htmlを確認してください

于 2012-10-23T04:46:29.007 に答える
0

この質問はすでにここで解決されています: Hashem Qolamiによるログアウト後にログインページまたは前のページに戻らないように、バックプレスでキャッシュをクリアします。同じ質問ですが、視点が異なります。

于 2012-10-27T12:15:53.093 に答える
0

ログインに成功した後にログインページに移動したくない場合は、ログインページでセッションをテストし、session設定されている場合は他のページにリダイレクトできます。このコードを試してください。

if ($data['session']['username']) != NULL) {
    redirect('home_page','refresh');
}
于 2012-10-23T05:01:31.060 に答える