已解决 - 嵌套 PHP If-else 无法正常工作
SOLVED - Nested PHP If-else doesn't working properly
我有使用 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";
}
我的条件语法有问题吗?非常感谢您的帮助。
我认为您在
处的语法有一些错误
$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
。
这就是为什么它总是检查空变量和 returns 零 (0) 行数的原因。
我有使用 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";
}
我的条件语法有问题吗?非常感谢您的帮助。
我认为您在
处的语法有一些错误$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
。
这就是为什么它总是检查空变量和 returns 零 (0) 行数的原因。