账户激活,CodeIgniter

Account activation, CodeIgniter

我想创建一个帐户激活,在注册后,link 将被发送到管理员(或一封)电子邮件,管理员只需单击 link 即可激活该帐户.

我可以注册和登录。我正在使用 MySQL Workbench 并有一个 "flag" 或者更确切地说只是我的帐户 table 中的一个字段(名为 user_login)来判断该帐户是否已启用或禁用,注册后默认禁用。

我无法通过电子邮件发送 link,我不知道从哪里开始。我要发送的 link 将包含一个随机字符串,并将发送给管理员,例如 abc/123/random?stringis=1234。然后管理员只需打开他的电子邮件并单击该字符串,然后该特定用户的帐户就会被激活。我找到了 this and this,但这只是关于如何通过电子邮件发送 link。

我对逻辑一窍不通。我是否创建一个函数,使 link 直接转到该函数,然后从那里将我的 table 中的值更改为 enabled 或任何我称之为的值,以便用户的帐户算不算激活?我是否需要创建一个新字段来匹配随机生成的字符串?

主要想法是我正在尝试像那些典型的网站那样,一旦 he/she 在电子邮件中单击它,就会向用户发送 link 以激活帐户,但是这次仅发送到管理员的特定电子邮件。

编辑:

在控制器中

public function activate_user($activation_code)
{
    $result = $this->home_model->activate($activation_code);

    if($result != FALSE)
    {
        echo "You have activated :".$result[0]->user_id.".";
    }
    else
    {
        echo "Activation failed, something went wrong.";
    }
}

模型中:

public function activate($activation_link)
{
    $this->db->select('*');
    $this->db->from('user_login');
    $this->db->where('activation_link', $activation_link);
    $query = $this->db->get();

    if($query->num_rows() == 1)
    {
        return $query->result();
    }
    else
    {
        return FALSE;
    }
}

为此,您需要在 table 中添加一个名为 activation_link 的字段,当用户在站点注册时生成随机字符串并将其存储在 activation_link 中并发送 link 给用户,所以一旦用户返回,然后检查 link 并激活该用户。

第一个

Database add two column

  • activation_token{varchar|255}
  • activation_time{日期时间}

After registration Success

  • 在 activation_token(md5 或 sha1(由您决定))
  • 中添加一些随机数
  • 如果使用当前时间戳(now())注册则添加时间

Link

link 应该是 我非常喜欢在激活中使用 userid url 因为它删除了 link 重复项。 http://sitename.com/activation/{user_id}/{哈希}

在控制器中

public function activation($user_id,$hash)
{

  $timeOfexpiration = 3600;

  $data = $this->model->get_data($id,$hash);

  if(!$data)
  {
    return false
  }

    //if user found 
    //check expiration of linke
    //like

  if($data['activation_time']+$timeOfexpiration < now())
  {
    return true;
  }
  else
  {
    return false;
  }

}