Cara bug login ini gimana ya?

gan ane mau nutup nih bug jadi kalo misalkan ane lagi mau login walaupun email atau passny bener salah satuny malah blank ga nampilin eror kira2 salah dimana ya? jadi kalo misalkan email bener terus passny salah malah blank bukany nampilin eror

public function login_sup()
    {
        if ($this->session->userdata('email')) {
            redirect('supplier');
        }
        $data['title'] = "Supplier Login";
        $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
        $this->form_validation->set_rules('password', 'Password', 'trim|required');
        if ($this->form_validation->run() == false) {
            $this->load->view('templates/header.php', $data);
            $this->load->view('auth/login_sup');
            $this->load->view('templates/footer.php');
        } else {
            $this->_login_sup();
        }
    }
    public function _login_sup()
    {
        $email = $this->input->post('email');
        $password = $this->input->post('password');

        $supplier = $this->db->get_where('supplier', ['email' => $email])->row_array();

        if ($supplier) {
            if ($supplier['role_id'] == 3) {
                if (password_verify($password, $supplier['password'])) {
                    $data = [
                        'id_sup' => $supplier['id_sup'],
                        'email' => $supplier['email'],
                        'role_id' => $supplier['role_id'],

                    ];
                    $this->session->set_userdata($data);
                    if ($supplier['role_id'] == 3) {
                        redirect('supplier/index');
                    } else {
                    }
                    $this->session->set_flashdata('message', '<div class="alert alert-danger" role="alert">Wrong user or pass</div>');
                    redirect('auth/login_usr');
                }
            }
        } else {
            $this->session->set_flashdata('message', '<div class="alert alert-danger" role="alert">Wrong user or pass</div>');
            redirect('auth/login_usr');
        }
    }

avatar werich1
@werich1

89 Kontribusi 7 Poin

Diperbarui 4 tahun yang lalu

2 Jawaban:

Jawaban Terpilih

Hanya saran mas, tahapan pengecekan saat login mungkin bagusnya gini. Ini berdasarkan yg sering sy terapkan selama ini.

Tahapannya :

  1. Cek apakah email/username tersebut ada atau tidak di database.
  2. Jika ada, cek passwordnya. Benar atau salah.
  3. Jika benar, cek role nya. Mau di arahkan kemana dia.

Punya agan kurang tepat saja. Karena ngecek role 2x.

Jadi sy coba rubah dikit menjadi seperti ini

<pre> public function _login_sup() { $email = $this-&gt;input-&gt;post('email'); $password = $this-&gt;input-&gt;post('password');

    $supplier = $this-&amp;gt;db-&amp;gt;get_where(&#039;supplier&#039;, [&#039;email&#039; =&amp;gt; $email])-&amp;gt;row_array();

    // cek user, ada atau tidak
    if ($supplier) {
        // jika user ada di database, cek passwordnya benar atau salah
        if (password_verify($password, $supplier[&#039;password&#039;])) {
            // jika passwordnya benar, buat session
            $data = [
                &#039;id_sup&#039; =&amp;gt; $supplier[&#039;id_sup&#039;],
                &#039;email&#039; =&amp;gt; $supplier[&#039;email&#039;],
                &#039;role_id&#039; =&amp;gt; $supplier[&#039;role_id&#039;],

            ];
            // buat session
            $this-&amp;gt;session-&amp;gt;set_userdata($data);
            // lalu cek role nya, dia mau kemana
            if ($supplier[&#039;role_id&#039;] == 3) {
                redirect(&#039;supplier/index&#039;);
            } else {
                redirect(&#039;supplier/index&#039;);
            }
            // jika passwordnya salah
        }else {
            $this-&amp;gt;session-&amp;gt;set_flashdata(&#039;message&#039;, &#039;&amp;lt;div class=&quot;alert alert-danger&quot; role=&quot;alert&quot;&amp;gt;Wrong password&amp;lt;/div&amp;gt;&#039;);
            redirect(&#039;auth/login_usr&#039;);
        }
        // jika user tidak ada di database
    } else {
        $this-&amp;gt;session-&amp;gt;set_flashdata(&#039;message&#039;, &#039;&amp;lt;div class=&quot;alert alert-danger&quot; role=&quot;alert&quot;&amp;gt;User not found&amp;lt;/div&amp;gt;&#039;);
        redirect(&#039;auth/login_usr&#039;);
    }
}

</pre> Semoga berhasil

avatar Ahmad554
@Ahmad554

95 Kontribusi 39 Poin

Dipost 4 tahun yang lalu

Tanggapan

keren mas, nuhun

oke makasih agan saya coba dlu

avatar werich1
@werich1

89 Kontribusi 7 Poin

Dipost 4 tahun yang lalu

Login untuk ikut Jawaban