Вы можете просто обойти свою систему входа в систему.
Сохранять любой адрес электронной почты ИЛИ псевдоним в cookie.
когда они активируются, захватите cookie, выполните поиск (убедитесь, что они существуют) для пользователя, затем настройте обычный сеанс входа в систему.
Вход в систему - это просто набор правил сеанса.
внутри сценария активации / процесса электронной почты, добавьте
$this->_set_ac_cookie({email});
-
protected function _set_ac_cookie({email})
{
return $this->input->set_cookie(array(
'name' => 'ac_cookie_'.{email},
'expire' => '7200', //You may mirror when/if your activation key expires
'domain' => 'yourdomain.com',
'path' => '/'
));
}
проверка cookie существует
protected function _before_activation({email})
{
return $this->input->cookie('ac_cookie_'.{email})) ? TRUE : FALSE;
//make sure {email} has a UNIQUE db constraint
}
, когда пользователь нажимает ссылку активации
if($this->_before_activation({email}))
{
//check user exists AND activation status === false (0)
//grab the user details from db based on {email}, set activation status to true (1)
//setup login session
$this->session->set_userdata(array(
'logged_in' => (int)1,
'user_id' => {user->id},
'alias' => {user->alias}
));
redirect('dashboard');
}
else
{
//sorry!
}