Php 帐户激活,CodeIgniter
我想创建一个帐户激活,注册后,一个链接将发送给管理员(或一个)电子邮件,管理员只需点击该链接激活该帐户 我有注册和登录工作。我使用的是MySQL Workbench,在我的accounts表中有一个“标志”,或者只是一个字段(名为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。然后管理员只需打
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())注册,则添加时间
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())注册,则添加时间
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