账户激活,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;
}
}
我想创建一个帐户激活,在注册后,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;
}
}