3

デフォルトの controller を持つサイトがありますhome。ホームページにログインフォームがあり、ログインボタンを押すとvalidate_credentials()、ホームコントローラーの関数である function が呼び出されます。

validate_credentialsユーザーが正しいログイン情報を入力できなかった場合、呼び出した関数内から:

$this->index()

これは基本的にホームページをリロードし、メールアドレスフォームに以前の情報を入力します. 私は電話するだろう

redirect('home');

しかし、セッション変数を作成しない限り、電子メール アドレス フォームに事前入力することはできません。

ユーザーが間違った情報を入力すると、URL は次のようになります。

http://www.example.com/home/validate_credentials

ただ欲しい:

http://www.example.com

あるいは:

http://www.example.com/home

ただし、ルートを使用する

$route['home'] = 'home/validate_credentials';

呼び出される関数を実際に変更します。URLを変更したいだけです。これは可能ですか?

4

2 に答える 2

1

検証プロセスをインデックス関数の一部にしてから、is_logged_in というセッション変数を作成し、資格情報の検証が成功したときにそれを 1 に設定します。

次に、次のようなことを行うのと同じくらい簡単です。

if($this->session->userdata('is_logged_in')==1)
{
    load the page here.
} else {
    load the login stuff here.
}

そうすれば、ログインしていない場合はログイン フォームが表示され、フォームの検証エラーは同じ URL に返され、ログインしている場合は通常のページに移動します。

于 2012-10-07T21:45:01.233 に答える
1

セッション ストレージ (および特にフラッシュデータ) は、まさにこの目的のためにあると言えます。つまり、どこかにリダイレクトするが、追加のデータを渡すためです。そうしたくない場合は、おそらくリダイレ​​クトせずにビューを読み込んでから、ページで HTML5 履歴 API を使用して URL バーの内容を変更する必要があります。

于 2012-10-07T19:46:26.003 に答える