0

私は codeigniter でコーディングされた Web サイトに取り組んでいます。現在、ログイン システムで問題が発生しています。登録済みのユーザーがログインに成功し、ブラウザーの [戻る] ボタンをクリックすると、ユーザーのログイン ページが再びリダイレクトされます。

ログイン ビューが読み込まれるログイン コントローラーで、ユーザーが既にログインしている場合はダッシュボードにリダイレクトするという条件を設定しましたが、ログインに成功した後、ブラウザーの戻るボタンをクリックすると、再びログイン ページにリダイレクトされます。

ログインビューが次のようにロードされる私のコントローラ関数:

    if($this->session->userdata('logged_in') && $this->session->userdata('logged_in') !=''){

        header('location:'. base_url().'message/inbox');

    }
    else
    {
        $this->template->load('template', 'login');
    }

私は codeigniter を初めて使用し、それについてあまり知りません。誰でも私を助けて、私のコードのどこが間違っているかを指摘してください。

ありがとう。

4

4 に答える 4

1

戻るボタンは通常、前のページのキャッシュされたバージョンを読み込みます。あなたの問題は CodeIgniter とは何の関係もありません。

問題の解決については、こちらをお読みください。PHP 用ではありませんが、ヘッダーを適切に設定する方法と、ログイン ページが開かれるたびに、logged_in セッション変数を削除する方法を示します。

編集

したがって、ヘッダーは次の形式にする必要があります。

header('Expires: -1'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Pragma: no-cache');

プレーンな PHP で問題を解決する方法を知っている場合、アプローチは CodeIgniter でも同じです。キャッシュが正しく機能するように設定されていることを確認しながら、セッションをクリアするか、リダイレクトを強制する (どちらでも構いません)。

于 2013-09-17T10:42:26.967 に答える
0

すべてのコントローラークラスの各構成で以下を使用します

if(!$this->authentication->try_session_login()){
    redirect('manage/login');
    }

この行の詳細$this->authentication->try_session_login:-

authentication = create an libyrary function named authentication. 
                In that library define try_session_login() function.

ログインにもこの認証ライブラリを使用します。

私は自分のアプリケーションでこのプロセスを個人的に使用しています。

于 2013-09-17T10:41:42.320 に答える
0

コントローラー コンストラクターにセッションをロードしましたか?

$this->load->library('session');

于 2013-09-17T10:36:57.513 に答える
0

ブラウザの戻るボタンをクリックすると、ブラウザの履歴からページが読み込まれます。常にログイン ページが表示されます。いくつかのチェックを入れましたが、履歴からページが読み込まれます。そのためには、ブラウザの戻るボタンを無効にする必要があります。

次のようなすべての関数の先頭にコードを配置すると、

if(!$this->session->userdata('logged_in'))
{
    redirect('controller_name/function_name','refresh');
}

セッションをチェックし、それに応じて動作します。

于 2013-09-17T11:21:32.833 に答える