Php 帐户激活,CodeIgniter

Php 帐户激活,CodeIgniter,php,codeigniter,email,mysql-workbench,activation,Php,Codeigniter,Email,Mysql Workbench,Activation,我想创建一个帐户激活,注册后,一个链接将发送给管理员(或一个)电子邮件,管理员只需点击该链接激活该帐户 我有注册和登录工作。我使用的是MySQL Workbench,在我的accounts表中有一个“标志”,或者只是一个字段(名为user\u login),用来判断帐户是启用还是禁用,注册后默认情况下禁用 我被卡住了,正在通过电子邮件发送链接,我不知道从哪里开始。我想发送的链接将包含一个随机字符串,并将发送给管理员,比如说abc/123/random?stringis=1234。然后管理员只需打

我想创建一个帐户激活,注册后,一个链接将发送给管理员(或一个)电子邮件,管理员只需点击该链接激活该帐户

我有注册和登录工作。我使用的是MySQL Workbench,在我的accounts表中有一个“标志”,或者只是一个字段(名为
user\u login
),用来判断帐户是启用还是禁用,注册后默认情况下禁用

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

我对逻辑一无所知。我是否创建了一个函数,通过该函数,链接将直接指向该函数,并从那里将我表中的值更改为
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 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;
  }

}
在模型中:

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

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

为此,您需要在表中添加一个名为
activation\u link
当用户在站点中注册时,生成随机字符串并将其存储在
activation\u link
中,并将链接发送给用户,因此一旦用户返回,则检查链接并激活该用户。

首先

数据库 添加两列

  • 激活令牌{varchar | 255}
  • 激活时间{datetime}
注册成功后

  • 在激活令牌中添加一些随机变量(md5或sha1(由您决定))
  • 如果使用当前时间戳(now())注册,则添加时间
链接

链接应该是 我非常喜欢激活url中的用户ID 因为这是为了消除链接重复。 {user_id}/{hash}

内部控制器

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

}
公共函数激活($user\u id,$hash)
{
$timeofexpntiation=3600;
$data=$this->model->get_data($id,$hash);
如果(!$data)
{
返回错误
}
//如果用户发现
//检查链接的过期时间
//像
如果($data['activation\u time']+$timeofexpntiation
首先

数据库 添加两列

  • 激活令牌{varchar | 255}
  • 激活时间{datetime}
注册成功后

  • 在激活令牌中添加一些随机变量(md5或sha1(由您决定))
  • 如果使用当前时间戳(now())注册,则添加时间
链接

链接应该是 我非常喜欢激活url中的用户ID 因为这是为了消除链接重复。 {user_id}/{hash}

内部控制器

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

}
公共函数激活($user\u id,$hash)
{
$timeofexpntiation=3600;
$data=$this->model->get_data($id,$hash);
如果(!$data)
{
返回错误
}
//如果用户发现
//检查链接的过期时间
//像
如果($data['activation\u time']+$timeofexpntiation
Ohhh,好吧,我先试试。哼。。。如果你对此有异议,请告诉我。好的,等等,但是我如何对包含参数的链接进行编码?因为我想在我为“激活”创建的新功能中访问它。如果您为登录控制器和激活方法添加了代码,那么您的url将是
http://domain.com/login/activate/ {youractivationlinkcode}
和激活函数应为
函数激活($activationLinkCode)
我对你的最后一条评论有点困惑,但我编辑了我所做的。那么你是说在
{youractivationlinkcode}
是我可以获取代码的地方?我不必使用类似于
$\u GET
?代码会自动传递给函数?哦,好吧,我先试试。哼。。。如果你对此有异议,请告诉我。好的,等等,但是我如何对包含参数的链接进行编码?因为我想在我为“激活”创建的新功能中访问它。如果您为登录控制器和激活方法添加了代码,那么您的url将是
http://domain.com/login/activate/ {youractivationlinkcode}
和激活函数应为
函数激活($activationLinkCode)
我对你的最后一条评论有点困惑,但我编辑了我所做的。那么你是说在
{youractivationlinkcode}
是我可以获取代码的地方?我不必使用类似于
$\u GET
?代码将自动传递给函数?3600秒意味着1分钟。几秒钟就到了。这取决于你想要多少。最佳实践是定义常数。对于24小时,使用60*60*243600秒意味着1分钟。几秒钟就到了。这取决于你想要多少。最佳实践是定义常数。24小时使用60*60*24