我想创建一个帐户激活,在注册后,链接将被发送到管理员(或一个)电子邮件,管理员只需单击该链接即可激活该帐户 .
我有注册和登录工作 . 我正在使用MySQL Workbench并且在我的帐户表(名为 user_login
)中有一个"flag"或者更确切地说是一个字段来判断该帐户是启用还是禁用,默认情况下在注册后禁用 .
我被困住并通过电子邮件发送链接,我不知道从哪里开始 . 我要发送的链接将包含一个随机字符串,并将发送给管理员,比如 abc/123/random?stringis=1234
. 然后管理员只需打开他的电子邮件并单击该字符串,然后该特定用户的帐户将被激活 . 我发现this和this但这只是关于如何通过电子邮件发送链接 .
我对逻辑没有任何想法 . 我是否创建了一个函数,该链接将直接转到函数,并从那里,它会将我的表中的值更改为 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 回答
为此,当用户在站点中注册然后生成随机字符串并将其存储在
activation_link
并将链接发送给用户时,需要在表中添加一个名为activation_link
的字段,以便用户返回后检查链接并激活该用户 .第一
activation_token {varchar | 255}
activation_time
将一些randome添加到activation_token(md5或sha1(由您决定))
如果使用当前时间戳(now())进行注册,则添加时间
链接应该是我非常喜欢激活网址中的userid,因为它删除了链接重复 . http://sitename.com/activation/ /
在控制器中