Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 忘记密码逻辑_Php_Codeigniter - Fatal编程技术网

Php 忘记密码逻辑

Php 忘记密码逻辑,php,codeigniter,Php,Codeigniter,我想做的是找出如何查看新密码和请求日期(0000-00-00:00:00)是否已设置,然后根据设置发送电子邮件。然而,我认为我需要改变我的逻辑,因为如果它已经设置好了,我不希望它继续向用户发送大量电子邮件。还有一点我不确定的是,如果他们没有收到电子邮件怎么办 我该怎么做有什么想法吗 编辑:只想添加新密码密钥不是用户登录的密码。从现在起,我打算让他们通过电子邮件中的链接进入一个页面,在那里他们可以输入新密码 if (!isset($user_data->new_password_key) &

我想做的是找出如何查看新密码和请求日期(0000-00-00:00:00)是否已设置,然后根据设置发送电子邮件。然而,我认为我需要改变我的逻辑,因为如果它已经设置好了,我不希望它继续向用户发送大量电子邮件。还有一点我不确定的是,如果他们没有收到电子邮件怎么办

我该怎么做有什么想法吗

编辑:只想添加新密码密钥不是用户登录的密码。从现在起,我打算让他们通过电子邮件中的链接进入一个页面,在那里他们可以输入新密码

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;