我想创建一个帐户激活,在注册后,会向管理员(或一个)电子邮件发送一个链接,管理员只需点击该链接即可激活该帐户。
我有注册和登录工作。我正在使用MySQL Workbench并拥有一个"标志"或者更确切地说,只是我帐户表中的一个字段(名为user_login
)来判断该帐户是启用还是禁用,默认情况下在注册后禁用该帐户。
我被困住并通过电子邮件发送链接,我不知道从哪里开始。我要发送的链接将包含一个随机字符串,并将发送给管理员,例如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;
}
}
答案 0 :(得分:3)
为此,当用户在站点中注册然后生成随机字符串并将其存储在activation_link
中并将链接发送给用户时,需要在名为activation_link
的表中再添加一个字段,以便用户返回然后检查链接并激活该用户。
答案 1 :(得分:2)
第一
数据库 添加两列
注册成功后
链接
链接应该是 我非常喜欢激活网址中的userid 因为它删除了链接重复。 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;
}
}