0

CodeIgniter はまだ非常に新しく、次のことをしようとしています。私はこれを間違っているかもしれませんが、どんな方向性でも大歓迎です。

ログインフォームの送信時に呼び出される関数がありますvalidate_creds. 成功した場合はフォームがログインし、失敗した場合はフォームを設定し$error_msgてリロードします。はvalidate_creds()正しく検証されているように見えますが、ステートメントでわかるように、フォームの上部に表示されているメッセージを渡しelseてリロードしたいと思います。index()$error_msg

public function index($error_msg = '')
        {
            //data
            $data['login'] = "Logged In";

            if($error_msg !== '') {
                $data['error_msg'] = $error_msg;
            }

            //view
            $this->load->view('templates/login/login_header',$data);
            $this->load->view('login/login_form', $data);
            $this->load->view('templates/login/login_footer',$data);
        }


         public function validate_creds()
                    {
                        $this->load->model('user_model');
                        $query = $this->user_model->validate();
                        if($query)//if the users creds have been validated...
                        {
                        $data = array(
                            'username' => $this->input->post('username'),
                            'is_logged_in' => true
                        );

                        $this->session->set_userdata($data);
                        redirect('gallery');
                    }

                    else
                    {
                        $error_msg = "Your username or password is not correct.";
                        $this->index($error_msg);
                    }
                }

フォーム メッセージ

<?php if($error_msg != ''): ?>
  <div class="alert alert-error">
    <?php echo $error_msg; ?>
  </div>
<?php endif; ?>

現在起こっていることは、$error_msg常に表示されていることです。

4

1 に答える 1

0

このコードは読みにくいので、これがコピー貼り付けで出てきた方法だといいのですが。php codenifferをチェックしてください。業界標準として、phpコード形式に関するzendのドキュメントをチェックしてください。

したがって、ロジックではエラーメッセージをインデックス関数に挿入する必要があります(これはアクションであると想定していますが、そのようにラベル付けされていません)。挿入されていない場合は、挿入されていないため、エラーメッセージは宣言されません。

$ this-> user_model-> validate();を見てみましょう。httpリクエスト(投稿)を適切に処理していることを確認します。

于 2012-11-26T00:50:21.943 に答える