こんにちは、私は CI にタンク認証を使用してきましたが、それは素晴らしいと思います。ユーザーがログイン ページを更新したときに (ログイン エラーの後)、「フォームの再送信の確認」ポップアップが表示されないように変更する方法があるかどうか疑問に思っていました。現れます。私は post redirect get メソッドを読んでいますが、タンク認証を台無しにしたくありません。追伸 - 私はかなり初心者です
1 に答える
この「フォームの再送信の確認」は、Tank Auth からではなく、Web ブラウザーからのものです。しばらく前に、Web ブラウザーのコーディングを行っている人が、再投稿が大きな問題であることに気付き、二重投稿などを停止するように警告を発しました。
それを回避する方法は2つ考えられます。
1) ログイン「post」を「get」にします。これは悪い考えです。あなたのパスワードはクエリ文字列に含まれています
2) 認証コントローラーで、ログイン フォーム ビューを再度ロードする代わりに、ログイン フォームのエラー表示バージョンにリダイレクトします。
基本的に、クエリ文字列またはセッションを介してエラー メッセージをログイン フォームに渡す方法を見つけます。そのページへのリダイレクト。タンク認証はエラーに言語キーを使用するため、非常に簡単です。
クエリ文字列として試してみました..うまくいくようですが、私のタンク認証はかなり大きく変更されています。
controllers/auth.php
私はそれが言う部分の直後にこれを追加しました//fail
redirect('auth/login/'.$errors['login']);
これは、tank auth によって生成されたログイン エラー キーを受け取り、それをhttp://yoursite/auth/login
クエリ パラメータとして に返します。
次に、ログイン機能の一番上にこれを置きます:
function login($error = ''){
if ($error != '') {
$data['errors']['login'] = $this->lang->line($error);
$this->load->view('auth/login_form', $data);
}
このコードは、パラメーターが存在する場合はそのパラメーターを取得します。次に、言語ファイルから適切な行を取得し、ログイン フォームを読み込みます。
これは「ログイン」エラーのみを処理することに注意してください。検証エラーなどを処理するには、さらにクエリ パラメーターを渡す必要があります。
// 編集私はセッションの方法を試してみようと思いました..そしてそのはるかにきれいです。
これは//fail
その場で行く
$this->session->set_flashdata('login_error', $this->lang->line($errors['login']));
redirect('/auth/login');
このようなものは、form_errors がある場所ではなく、views/auth/login_form.php に入ります。
<? if ( $this->session->flashdata('login_error') != '') {
echo '<p style="color:#f00;">'.$this->session->flashdata('login_error').'</p>';
} ?>