首页 文章

帐户激活,CodeIgniter

提问于
浏览
0

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

我有注册和登录工作 . 我正在使用MySQL Workbench并且在我的帐户表(名为 user_login )中有一个"flag"或者更确切地说是一个字段来判断该帐户是启用还是禁用,默认情况下在注册后禁用 .

我被困住并通过电子邮件发送链接,我不知道从哪里开始 . 我要发送的链接将包含一个随机字符串,并将发送给管理员,比如 abc/123/random?stringis=1234 . 然后管理员只需打开他的电子邮件并单击该字符串,然后该特定用户的帐户将被激活 . 我发现thisthis但这只是关于如何通过电子邮件发送链接 .

我对逻辑没有任何想法 . 我是否创建了一个函数,该链接将直接转到函数,并从那里,它会将我的表中的值更改为 enabled 或我调用的任何内容,以便将用户的帐户计为已激活?我是否需要创建一个新字段来匹配随机生成的字符串呢?

我的主要想法是尝试像那些典型的网站一样,一旦他/她在电子邮件中点击它就会发送一个链接来激活帐户,但这次只是一个特定的电子邮件,即管理员 .

编辑:

在控制器中

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;
    }
}

2 回答

  • 3

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

  • 2

    第一

    数据库添加两列

    • activation_token {varchar | 255}

    • activation_time

    注册成功后

    • 将一些randome添加到activation_token(md5或sha1(由您决定))

    • 如果使用当前时间戳(now())进行注册,则添加时间

    链接

    链接应该是我非常喜欢激活网址中的userid,因为它删除了链接重复 . http://sitename.com/activation/ /

    在控制器中

    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;
      }
    
    }
    

相关问题