1

私はコントローラー認証を持っており、ログインと登録の2つの方法があります。

そして、それはうまく機能しています。

ただし、login_and_registerという別の関数が必要です。この関数には、実行される部分を決定するif条件があります。ログイン部分(基本的にログイン方式からのコード)または登録部分(登録方式からのコード)の場合。

if条件は、どの送信ボタンがクリックされたかをチェックする必要があります。

しかし、ここに問題があります。

両方のフォーム(ログインと登録)のform_openが次のようになっている必要があります:

<?php echo form_open('auth/login_and_register'); ?>

また、これをたとえばauth / login_and_register_log、auth / login_and_register_reg、auth / login_and_register / log、auth / login_and_register/regなどに変更することはできません。

ログインフォームと登録フォームは同じビューにあり、送信が押された後、認証コントローラーのこの関数login_and_registerが実行されます。

ログインフォームの場合はsubmitlog 、登録フォームの場合はsubmitregと呼ばれるため、送信値の名前に基づいてif条件を作成できると考えていました。

だから、多分このようなもの:

if( isset($this->form_validation->set_value('submitlog')) ) {
   //code for login part
}
elseif ( isset($this->form_validation->set_value('submitreg')) ) {
   //code for registration part
}
else {
   //code for redirect to homepage
}

しかし、それは機能していません。なぜですか?

4

2 に答える 2

2

送信ボタンの名前を照会することをお勧めします。動作するコードは次のとおりです。

if ($this->input->post("submitlog") !== false) {
    //code for login part
} elseif ($this->input->post("submitreg") !== false) {
    //code for registration part
} else {
    //code for redirect
}
于 2013-01-04T11:35:42.647 に答える
1

その代わりに、対応するフォーム名の値を使用して、両方のフォームの非表示フィールドを保持できます。コントローラでは、このフィールド値を確認して、送信されたフォームを特定できます。次に、必要な機能にリダイレクトできます。

于 2013-01-04T09:13:01.987 に答える