Php 忘记密码逻辑
我想做的是找出如何查看新密码和请求日期(0000-00-00:00:00)是否已设置,然后根据设置发送电子邮件。然而,我认为我需要改变我的逻辑,因为如果它已经设置好了,我不希望它继续向用户发送大量电子邮件。还有一点我不确定的是,如果他们没有收到电子邮件怎么办 我该怎么做有什么想法吗 编辑:只想添加新密码密钥不是用户登录的密码。从现在起,我打算让他们通过电子邮件中的链接进入一个页面,在那里他们可以输入新密码Php 忘记密码逻辑,php,codeigniter,Php,Codeigniter,我想做的是找出如何查看新密码和请求日期(0000-00-00:00:00)是否已设置,然后根据设置发送电子邮件。然而,我认为我需要改变我的逻辑,因为如果它已经设置好了,我不希望它继续向用户发送大量电子邮件。还有一点我不确定的是,如果他们没有收到电子邮件怎么办 我该怎么做有什么想法吗 编辑:只想添加新密码密钥不是用户登录的密码。从现在起,我打算让他们通过电子邮件中的链接进入一个页面,在那里他们可以输入新密码 if (!isset($user_data->new_password_key) &
if (!isset($user_data->new_password_key) && (!isset($user_data->new_password_requested)))
{
if ($this->kow_auth->forgot_password($this->input->post('username')))
{
$this->kow_auth->send_email('forgot_password', 'KOW Manager Forgot Password Email', $user_data);
echo json_encode(array('success' => 'yes', 'message' => 'A temporary password has been emailed to you!'));
}
else
{
}
}
else
{
echo json_encode(array('success' => 'yes', 'message' => 'Check your email for your temporary password!'));
}
编辑2:
我对它似乎有一些逻辑问题,因为如果它归结到if语句if($ready_sent_password),并且由于某种原因他们没有得到它,该怎么办。然后呢?或者,如果itt将问题归结为如果(!strotime($user_data->new_password_request)form_validation->set_rules('username'、'username'、'trim | required | xss_clean');
如果(!$this->form\u validation->run())
{
echo json_encode(数组('error'=>'yes','message'=>'提交表单时出现问题!请刷新窗口并重试!');
返回;
}
$user_data=$this->users->get_user_by_username($this->input->post('username');
如果($user_data===NULL)
{
echo json_encode(数组('error'=>'yes','message'=>'用户在数据库中不存在!'));
返回;
}
$ready_sent_password=(isset($user_data->new_password_key)和&isset($user_data->new_password_request));
如果($ready\u sent\u password)
{
echo json_encode(数组('success'=>'yes','message'=>'检查您的电子邮件以获取临时密码!');
返回;
}
如果(!strotime($user\u data->new\u password\u requested)'yes','message'=>'您必须等待2天才能通过电子邮件发送新的临时密码!');
}
其他的
{
如果($this->kow\u auth->忘记密码($this->input->post('username'))
{
$this->kow_auth->send_email('忘记密码',$kow Manager忘记密码email',$user_data);
echo json_encode(数组('error'=>'yes','message'=>'已通过电子邮件向您发送临时密码');
}
其他的
{
echo json_encode(数组('error'=>'yes','message'=>'无法为您创建临时密码!');
}
}
就个人而言,我不会担心向用户发送大量电子邮件。如果用户点击按钮20次,他们将收到20封电子邮件 但是,如果他们上次请求密码的时间不到20分钟,您不想重新发送电子邮件,您可以执行以下操作:
<?php
// Assuming this is in UTC
$requested = strtotime($user_data->new_password_requested);
if (time() - $requested <= (60 * 20))
{
// Don't send the email
return false;
}
return true;
是的,但其他人也可以单击该按钮。或者机器人。这正是我担心的。我还在codereview页面上发布了一篇文章,其中包含了我的整个提交功能,以查看每个人的想法。我不确定它的逻辑。我想说的是,这是一个随机密码,不用于登录。
<?php
// Assuming this is in UTC
$requested = strtotime($user_data->new_password_requested);
if (time() - $requested <= (60 * 20))
{
// Don't send the email
return false;
}
return true;