3

ログインコントローラがあります。これは、ユーザーが有効なときにインデックスページにリダイレクトすることを想定しています。リダイレクトは機能しますが、インデックスページでは、URLはまだ検証メソッドのURLです(例:login / validate_login /)。インデックスページのリンクをクリックしてからブラウザの履歴に戻ってみると、ブラウザはインデックスページではなくvalidateメソッドを示しています。

これを修正するにはどうすればよいですか?

リフレッシュとロケーションの両方でリダイレクトを使用しようとしましたが、どちらもうまくいきませんでした。

これはjQuerymobileのajax呼び出しの問題だと思いますが、よくわかりません。

助けていただければ幸いです。敬具

注:URLの画像をインデックスページに投稿しますが、私は新しいユーザーであるため、投稿することはできません。

私の検証方法:

    function validate_login($controller='',$method='') {
    $this->load->library('form_validation');
    $this->load->model('workout_model');

    $this->form_validation->set_rules('ex_password','Koden','trim|required|min_length[4]|max_length[4]|callback_pw_check');


    if($this->form_validation->run() == FALSE) {
        $this->index();
    } else {
        if($query = $this->workout_model->validate()) {

            $data = array(
            'is_logged_in' => true,
            'user_id' => $query->id,
            'current_exercise' => '1'
            );

            $this->session->set_userdata($data);

            if($controller=='' || $method=='') {
                redirect("workout");
            } else {
                redirect($controller."/".$method);
            }
        } else {
            $this->index();
        }
    }
}
4

3 に答える 3

1

URLを正しく更新するには、メソッド呼び出しの代わりにredirect(...)を使用することと、jQueryMobileajax呼び出しを無効にすることの2つが必要と思われます。これを行う2つの方法:最初にメソッドを指すリンクに属性を追加し、

<a href='.../validate_login/...' data-ajax='false'>...</a>

または、設定を編集してajax呼び出しをグローバルに無効にします(テストされていません)。

于 2013-05-05T01:03:28.017 に答える
0

これを処理する方法は2つあり、AJAXとは関係ありません。CIが処理する方法です。最も速くて簡単な方法は変更することです

$this->index();

redirect(index);

実際にリダイレクトするのではなく、現在のURLであるvalidate_loginのインデックス関数を呼び出しています。この方法で行う場合の問題は、ログインが失敗した場合でも、次回の試行のためにvalidate_loginURLに残ることです。

これを処理する最良の方法は、フォーム自体ではなく、コントローラーのインデックス関数から実際のvalidate_login関数を呼び出すことです。したがって、フォームをインデックスに送り返し、インデックスコントローラにフォームデータをチェックさせ、trueの場合はvalidate_login()を呼び出します。そうすれば、実際にインデックスページを離れることはなく、ログインフォームが送信されたかどうかを処理するだけです。URLの問題を解決します。私は実際に、あらゆる種類の検証のためにフォームを送信するすべてのページでこれを行います。

于 2012-10-13T04:06:19.360 に答える
0

ログインレジスタなどのHTMLフォームを介して送信する場合、ダッシュボードのリダイレクトもあるので、このようにフォームタグを更新する必要があります。これは、Codeigniterとjquerymobileを使用している場合に発生します。data -ajax="false 「」

<form id="login-box" method="post" action="<?php echo base_url('index.php/auth/login_user'); ?> " data-ajax="false">
于 2019-12-19T21:18:09.777 に答える