我有帶有codeigniter的注冊和登錄系統,所有基本功能都可以正常作業。
關于驗證是如何作業的,它將檢查帳戶的狀況,帳戶是否存在,令牌是否已過期,帳戶是否已激活,或帳戶是否無效。這是代碼:
public function v_akun($email,$token)
{
$cek_email = $this->db->get_where('users',array('email' => $email))->num_rows();
if ($cek_email == 1) {
$cek_token = $this->db->get_where('users',array('token_email' => $token_email))->num_rows();
if ($cek_token == 1) {
$user_token = $this->db->get_where('users', ['email' => $email])->row_array();
if ($stdate - $user_token['created_token'] < (60 * 60 * 2)) {
$data = array(
'token_email' => '',
'validasi_email' => '1',
);
$where = array(
'email' => $email,
'token_email' => $token,
);
// Update to table
$this->m_data->update_data($where, $data,'users');
redirect('/home');
} else {
$where = array(
'email' => $email,
);
// Delete from table
$this->m_data->hapus_data($where, 'users');
echo "token expired";
}
} else {
echo "account already activated";
}
} else {
echo "invalid account";
}
}
當帳戶無效時,它會顯示該帳戶不存在的正確訊息,但除此之外,程式總是拋出一個“已經”狀態,表示該帳戶已被激活。到這里:
else {
echo "account already activated";
}
我的條件句法有問題嗎?非常感謝你的幫助。
uj5u.com熱心網友回復:
我認為您的語法有一些錯誤
$cek_token = $this->db->get_where('users',array('token_email' => $token_email))->num_rows();
if ($cek_token == 1) {
echo "account not activated";
} else {
echo "account already activated";
}
我認為問題在于$token_email,這個變數沒有退出,來自引數的實際變數是$token。
這就是為什么它總是檢查空變數并回傳零 (0) 行的原因。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/487742.html
